Cum să eviți timeout-ul în așteptarea răspunsului de la scriptul CGI?

8 mar. 2016, 09:30:35
Vizualizări: 16.3K
Voturi: -1

Am o eroare Apache care vine din /wp-cron.php. Nu am modificat acel fișier. Cum pot evita timeout-ul?

2
Comentarii

Trebuie să identifici care job cron din plugin-urile tale cauzează timeout-ul. De asemenea, încearcă wp-cron control, este minunat pentru a evita condiții rare care duc la execuția multiplă a wp-cron în același timp, care poate fi (nu pot ști cu siguranță) cauza problemei tale.

cybmeta cybmeta
8 mar. 2016 09:55:08

@cybmeta Voi încerca mai întâi soluția mea, voi încerca să identific care plugin o cauzează. Trebuie să păstrez plugin-ul meu. Oricum, mulțumesc.

Jows Jows
8 mar. 2016 10:06:12
Toate răspunsurile la întrebare 1
5

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.

  1. Conectează-te la cPanel
  2. În secțiunea Avansat, dă clic pe Cron Jobs.
  3. Selectează O dată pe oră din meniul drop-down Setări comune.
  4. Acum selectează La fiecare 6 ore din meniul drop-down Oră.
  5. Î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.

  6. 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

8 mar. 2016 10:02:57
Comentarii

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.

cybmeta cybmeta
8 mar. 2016 10:30:58

@cybmeta Nu înțeleg. Ce ar trebui să fac dacă spui că nu este recomandat.

Jows Jows
8 mar. 2016 10:46:20

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.

cybmeta cybmeta
8 mar. 2016 11:52:28

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.

Sas3 Sas3
2 oct. 2017 05:30:52

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.

Mark Kaplun Mark Kaplun
2 oct. 2017 08:10:48