Wenn ein Benutzer eine Site besucht und sein Besuch einen sehr 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, oder?
8
Antworten:
Kurze Antwort - Nein . Jede Seitenanforderung initialisiert die geplante Warteschlange. Es ist nur eine Initialisierungsanforderung. Die Wp-Cron-Anfrage ist eine eigenständige Anfrage.
Allerdings - Wenn das Cron-Ereignis nicht wirklich gut funktioniert (es hat 1000-dB-Abfragen, z. B. oder eine wirklich langwierige Ressource anzufordern) oder beides, oder wenn Sie das Cron-Ereignis für jede Anforderung neu planen ... genau wie bei jedem anderen Bei anderen http-Anforderungen werden Ressourcen, CPU-Leistung, Speicher usw. verbraucht. Wenn genügend Ressourcen verbraucht werden, wird Ihre Seite langsamer.
quelle
Die kurze Antwort lautet in den meisten Fällen tatsächlich Ja .
Erstens führt das Laichen 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-volle-Sekunde-auf-Cron-Ausführung / .
Zweitens konkurriert der erzeugte Job jetzt mit dem Laden der Seite 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 Schreib- oder Lesezugriff eines anderen Prozesses zu verhindern - siehe /programming/1005206/does-sqlite-lock-the-database -file-on-read # 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 möglicherweise unbedeutend ist. Natürlich wäre es auch ein Problem, wenn ein Cron-Job zufällig ausgeführt würde, wenn eine Seite angefordert wird, aber Cron-Jobs beim Laden der Seite garantiert werden Sie wirken sich 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
und deaktivieren Sie das Cron-Laichen beim Laden der Seite mit dem folgenden Eintrag in
wp-config.php
:quelle
private
Methoden, wie sieWP_Http::_dispatch_request
jetzt nie aufgerufen werden.)