I lavori cron di WordPress rallentano il caricamento della pagina?


8

Se un utente visita un sito e la sua visita innesca un processo cron piuttosto intenso, la velocità di caricamento della pagina sarà più lenta per lui, giusto? A quanto ho capito, la pagina non attende l'esecuzione del processo cron prima del caricamento, ma poiché il processo cron sarebbe in esecuzione in parallelo, è possibile che la pagina si carichi più lentamente poiché il server è occupato, giusto?


Leggi su spawn_cron che potrebbe esserti di aiuto: codex.wordpress.org/Function_Reference/spawn_cron
TomC

Se il tuo cron job è abbastanza pesante da rendere occupato il server, allora è abbastanza pesante da rendere occupato il server. Non seguo esattamente quale sia la tua domanda - per confermarlo?
Rarst

Sì, volevo solo confermarlo, poiché ho letto che i caricamenti di pagine e cron job vengono eseguiti in modo indipendente e quindi il caricamento della pagina non è interessato. Tuttavia, se come dici tu, il cron job è abbastanza pesante influenzerà il caricamento della pagina come effetto collaterale.
Urok93,

Risposte:


10

Breve risposta - Nope . Qualsiasi richiesta di pagina inizializza la coda pianificata. È solo una richiesta di inizializzazione. La richiesta di Wp-cron è una richiesta autonoma.

quindi richiedendo l'URL /somepageè sufficiente inizializzare la richiesta/wp-cron.php

Tuttavia - Se l'evento cron non funziona molto bene (ha 1000 query db, ad esempio o sta richiedendo una risorsa davvero a lunga risposta), o entrambi, o riprogrammando l'evento cron per ogni richiesta ... proprio come qualsiasi altre richieste http consumeranno risorse, prestazioni della CPU, memoria, ecc ... se consuma abbastanza risorse, la tua pagina diventerà più lenta.


9

La risposta breve è in realtà , nella maggior parte dei casi.

In primo luogo, sulla maggior parte dei set-up, la generazione di un processo cron comporta un ritardo di 1 secondo sul caricamento della pagina, poiché viene eseguito tramite una richiesta HTTP di loopback con un timeout di 1 secondo - consultare https://wordpress.org/support/topic/save -una-seconda-completa-su-cron-esecuzione / .

In secondo luogo, il lavoro generato sarà ora in competizione con il caricamento della pagina per l'accesso al database (così come altre risorse). Più processi possono leggere il database contemporaneamente; tuttavia, ogni volta che un processo sta scrivendo nel database, per impostazione predefinita è bloccato per impedire l' accesso simultaneo in scrittura o lettura da parte di qualsiasi altro processo - consultare /programming/1005206/does-sqlite-lock-the-database -file-on-reads # answer-1005218 . L'impatto di ciò dipende dalla complessità degli aggiornamenti del database del lavoro cron e da quanto tempo il database è effettivamente bloccato e può essere insignificante. Naturalmente, sarebbe anche un problema se un cron job fosse in esecuzione quando viene richiesta una pagina, ma con cron job generati sulle garanzie di caricamento della pagina influenzeranno almeno il caricamento della pagina.

Se il server / hosting lo consente, si consiglia di impostare un processo cron pianificato per l'esecuzione ogni poche ore, con il comando

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

e disabilita la spawn cron al caricamento della pagina con la seguente voce in wp-config.php:

define('DISABLE_WP_CRON', true);

1
Questa è la vera risposta.
ILikeTurtles,

Secondo l'articolo, il ritardo di 1 secondo si verifica nelle versioni cURL inferiori alla 7.15.5. Funziona bene su versioni arricciate da 7.15.5 e successive. La versione 7.15.5 è stata rilasciata nell'agosto 2006. Non è più previsto un timeout di 1 secondo, tranne per le configurazioni veramente vecchie.
user63350


@ user63350 Questo è vero per cURL ma non per WordPress. Dall'articolo: "la classe WP_Http_Curl regola il timeout frazionario a un secondo intero (anche se cURL lo supporterebbe)". Anche nell'ultimo WordPress (5.2.2) il timeout è ancora di 1 secondo, quindi il problema è presente in tutti i set-up incluso l'ultimo.
Jake,

In realtà il timeout di 1 secondo è stato corretto in WordPress 4.6 da # 33055 . (Guardare la base di codice è confuso poiché il vecchio codice è ancora lì, compresi privatemetodi come quelli WP_Http::_dispatch_requestche ora non vengono mai chiamati.)
Jake
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.