it-swarm.com.de

Verlangsamen WordPress-Cron-Jobs das Laden der Seite?

Wenn ein Benutzer eine Site besucht und sein Besuch einen ziemlich intensiven Cron-Job auslöst, ist die Seitenladegeschwindigkeit für ihn langsamer, oder? Soweit ich weiß, wartet die Seite vor dem Laden nicht auf die Ausführung des Cron-Jobs. Da der Cron-Job jedoch parallel ausgeführt wird, wird die Seite möglicherweise immer noch langsamer geladen, da der Server ausgelastet ist.

7
urok93

Kurze Antwort - Nein . Jede Seitenanforderung initialisiert die geplante Warteschlange. Es ist nur eine Initialisierungsanfrage. Wp-cron-Anforderung ist eine eigenständige Anforderung.

wenn Sie die URL /somepage anfordern, initialisieren Sie einfach die Anforderung für /wp-cron.php.

Allerdings - Wenn das cron-Ereignis nicht richtig funktioniert (es hat z. B. 1000-dB-Abfragen oder fordert eine sehr lange Antwort-Ressource an) oder beides oder plant das cron-Ereignis für jede Anfrage neu ... genau wie jede andere Bei anderen http-Anfragen werden Ressourcen, CPU-Leistung, Arbeitsspeicher usw. verbraucht. Wenn genügend Ressourcen verbraucht werden, wird Ihre Seite langsamer.

10
Butuzov

Die kurze Antwort lautet in den meisten Fällen yes .

Erstens führt das Spawnen eines Cron-Jobs bei den meisten Setups zu einer Verzögerung von 1 Sekunde beim Laden der Seite, da dies über eine Loopback-HTTP-Anforderung mit einem Timeout von 1 Sekunde erfolgt (siehe https://wordpress.org/support/topic)/save-a-full-second-on-cron-execution/ .

Zweitens konkurriert der erzeugte Job jetzt mit dem Seitenladen um den Datenbankzugriff (sowie um andere Ressourcen). Mehrere Prozesse können die Datenbank gleichzeitig lesen. Wenn ein Prozess in die Datenbank schreibt, ist er standardmäßig gesperrt, um den gleichzeitigen Schreibzugriff auf oder durch einen anderen Prozess zu verhindern - siehe https://stackoverflow.com/questions/1005206/does -sqlite-sperre-die-datenbank-datei-beim-lesen # answer-1005218 . Die Auswirkungen davon hängen davon ab, wie komplex die Datenbankaktualisierungen des Cron-Jobs sind und wie lange die Datenbank tatsächlich gesperrt ist, und können unbedeutend sein. Natürlich ist es auch ein Problem, wenn ein Cron-Job ausgeführt wird, wenn eine Seite angefordert wird, aber wenn Cron-Jobs beim Laden der Seite erzeugt werden Garantien, wirkt sich dies zumindest auf das Laden der Seite aus.

Wenn Ihr Server/Hosting dies zulässt, wird empfohlen, mit dem Befehl einen geplanten Cron-Job einzurichten, der alle paar Stunden ausgeführt wird

php -q /path/to/wp-cron.php

und deaktiviere das Cron-Spawnen beim Laden der Seite mit dem folgenden Eintrag in wp-config.php:

define('DISABLE_WP_CRON', true);
8
Jake