Cum să eviți timeout-ul în așteptarea răspunsului de la scriptul CGI?
WordPress folosește un fișier numit wp-cron.php ca un job cron virtual, sau sarcină programată, pentru a automatiza lucruri precum publicarea postărilor programate, verificarea actualizărilor pentru pluginuri sau teme, trimiterea notificărilor prin email și multe altele.
În mod implicit, WordPress este configurat să apeleze wp-cron.php de fiecare dată când cineva vizitează site-ul tău WordPress atunci când există o sarcină programată, practic întrebând "este timpul să fac ceva acum?".
Pe site-urile cu trafic mic acest lucru este perfect în regulă, dar atunci când vizitatorii sosesc în număr mare, verificarea de mai multe ori pentru sarcini programate poate fi foarte ineficientă și poate duce la probleme de utilizare a resurselor serverului, plus poate încetini încărcarea site-ului tău.
Dezactivarea comportamentului implicit al wp-cron.php
Putem spune cu ușurință WordPress-ului să ne lase pe noi să gestionăm execuția wp-cron.php folosind fișierul wp-config.php.
Deschide fișierul wp-config.php cu Editorul de Cod din cPanel File Manager Du-te la partea de jos a setărilor bazei de date în wp-config.php, de obicei în jurul liniei 37.
Adaugă codul de mai jos:
define('DISABLE_WP_CRON', 'true');
Configurarea unui job cron manual pentru wp-cron.php
Nu vrem să lăsăm WordPress fără nicio posibilitate de a automatiza sarcinile de care ar putea avea nevoie. Dar acum că nu rulează pentru fiecare vizitator, putem avea mult mai mult control asupra momentului în care aceste sarcini au loc.
Pentru majoritatea utilizatorilor WordPress, rularea scriptului wp-cron.php la fiecare 6 ore este perfect suficientă. Asta ar însemna doar 4 execuții într-o zi, comparativ cu posibil sute, sau chiar mii dacă ai avut foarte mult trafic pe site în acea zi.
- Conectează-te la cPanel
- În secțiunea Avansat, dă clic pe Cron Jobs.
- Selectează O dată pe oră din meniul drop-down Setări comune.
- Acum selectează La fiecare 6 ore din meniul drop-down Oră.
În final, completează codul pentru a rula jobul nostru cron și dă clic pe Adaugă Job Cron Nou.
- cd /home/userna5/public_html; php -q wp-cron.php
Unde userna5 este numele tău de utilizator cPanel.
Ține minte că calea /home/userna5/public_html este pentru un domeniu principal, dacă folosești un domeniu adăugat sau ai WordPress instalat într-un sub-director, asigură-te că actualizezi calea.
Ar trebui să vezi că noul tău job cron a fost adăugat cu succes.
http://www.inmotionhosting.com/support/website/wordpress/disabling-the-wp-cronphp-in-wordpress

6 ore este un interval foarte mare, potrivit doar pentru site-uri web cu dinamică foarte scăzută; nu poate fi o recomandare generală. De asemenea, wp-cron.php este un script PHP care nu este potrivit pentru a fi executat prin php-cli. Ar trebui să-l executați prin comanda wget; altfel puteți avea probleme. De exemplu, executarea lui prin php-cli setează timpul maxim de execuție la nelimitat, ceea ce lasă ușa deschisă pentru job-uri cron cu erori sau codate greșit, cum pare că aveți, să rămână deschise pentru totdeauna până când serverul vostru va ceda.

6 ore poate fi bun pentru tine, am spus doar că nu poate fi o recomandare generală. Pentru mine este 5 minute. Dacă 6 ore este bun pentru tine, folosește-l. Dar îți recomand cu adevărat să execuți wp-cron.php prin wget și nu prin comanda php-cli.

Dacă problema este cu intrările din sarcinile planificate ale wp-cron (cauza timeout-urilor), simpla adăugare a lor în altă parte poate să nu ajute. Trebuie să știm ce cauzează timeout-ul pentru a depana problema în mod fiabil.

acest răspuns este complet pe dos. wp-cron este problematic pe site-uri cu trafic mic, dar ar trebui să funcționeze bine pe site-uri cu trafic mare. Cauza erorilor tale este cel mai probabil cod prost în plugin-uri sau temă. Dacă ai un proces care necesită mai mult timp pentru finalizare, o metodă mult mai bună este să schimbi timeout-ul PHP direct în cod. Un cron care rulează la fiecare 6 ore este complet ridicol și mai devreme sau mai târziu va strica ceva.
