Măriți timpul de execuție a scriptului. Timp de execuție crescut al unui script PHP cu Nginx. De ce măsurători în programare?

Dacă aveți un proiect mare sau un server cu resurse limitate, atunci veți vedea adesea eroarea „504 Gateway Time-out”.

Puteți urma pașii de mai jos pentru a crește valoarea timeout. În PHP, valoarea implicită este de 30 de secunde.

Modificări în php.ini

Dacă doriți să modificați timpul maxim de execuție pentru scripturile PHP de la 30 de secunde (implicit) la 300 de secunde.

Nano /etc/php5/fpm/php.ini

Instalare...

Timp_de_execuție_maxim = 300

În Apache PHP rulează ca modul, aceste modificări vor fi suficiente. Dar în cazul nostru, trebuie să facem modificări în mai multe locuri.

Modificări în PHP-FPM

Acest lucru este necesar dacă ați decomentat mai devreme parametrul request_terminate_timeout. În mod implicit, este comentat și ia valoarea max_execution_time găsită din php.ini

Deschidere...

Nano /etc/php5/fpm/pool.d/www.conf

Se instalează...

Request_terminate_timeout = 300

Modificări în Nginx Config

Creșterea limitei de timp pentru un domeniu exemplu.com

Nano /etc/nginx/sites-available/example.com locație ~ \.php$ (include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }

Dacă doriți să creșteți limita de timp pentru toate domeniile de pe serverul dvs., puteți edita fișierul principal de configurare nginx.conf:

Nano /etc/nginx/nginx.conf

Adăugați următorul parametru la secțiunea http(..).

Http(#... fastcgi_read_timeout 300; #... }

Ați primit vreodată o eroare Eroare fatală: Timpul maxim de execuție de 30 de secunde a fost depășitîn WordPress? Această eroare înseamnă că scriptul PHP care rulează a necesitat mai mult timp pentru finalizare decât limita stabilită și scriptul a fost oprit din această cauză. Acest ghid vă va ajuta să înțelegeți întrebarea cum să creșteți timpul de execuție a scriptului în PHP și, prin urmare, să rezolvați eroarea care a apărut.

Înainte de a începe acest ghid, verificați dacă aveți:

  • Acces la Consola Administrativă a site-ului dvs. WordPress (engleză)

Pasul 1 – Instalați pluginul WP Maximum Execution Time Exceeded

WordPress are o comunitate imensă, așa că există un plugin la îndemână sau mai multe pentru fiecare funcționalitate de care aveți nevoie. Situația noastră nu face excepție; pentru a crește timpul de execuție a scriptului în PHP, puteți utiliza pluginul WP Maximum Execution Time Exceeded și remediați eroarea apărută. Puteți găsi instrucțiuni detaliate despre cum să instalați pluginul WordPress.

Acest plugin face modificări fișierului .htaccess și mărește limitele de timp de execuție a scriptului. După instalarea pluginului, nu trebuie să faci nimic altceva, totul este deja făcut de plugin. Pluginul nu are o pagină de setări, așa că dacă doriți să returnați setările anterioare, pur și simplu ștergeți pluginul și .htaccess va fi revenit la forma sa inițială.

Pasul 2 – Editarea manuală a fișierului .htaccess

Dacă aveți deja o mulțime de pluginuri instalate și nu doriți să utilizați unul suplimentar sau pur și simplu nu v-a ajutat să scăpați de eroare, atunci puteți face manual modificări fișierului .htaccess pentru a crește execuția maximă limita. Cel mai simplu mod de utilizare Manager de fișiere situat în panoul de control. Dacă nu știți cum să găsiți fișierul .htaccess, vă rugăm să consultați instrucțiunile detaliate. Va trebui să introduceți următorul cod în fișierul .htaccess din partea de jos și să îl salvați făcând clic Salvați:

Php_value max_execution_time 60

Aceasta va crește valoarea parametrului max_execution_time și, pentru PHP, timpul de execuție a scriptului la 60 de secunde (1 minut). Dacă încă primiți această eroare, încercați să o creșteți și mai mult - până la 120/180 de secunde și așa mai departe.

Pasul 3 – Modificarea valorii max_execution_time în cPanel

Dacă utilizați cPanel, atunci puteți crește parametrul max_execution_time direct prin cPanel. Accesați secțiunea Selectați versiunea PHP (Selectați versiunea PHP).

Măriți valoarea pe care o vedeți în linie timp_max_execuție. De obicei, este setat la 30 de secunde în mod implicit, în exemplul nostru l-am mărit la 60 de secunde. Clic aplica(Aplicați) pentru a salva modificările.

Asta e tot, ai crescut cu succes valoarea parametrului limită timp_max_execuție pentru site-ul dvs.

Concluzie

Urmând acest ghid, ați învățat 3 moduri de a crește timp_max_execuție pentru WordPress, pentru a modifica timpul de execuție a scriptului în PHP și a scăpa de eroare Eroare fatală: Timpul maxim de execuție a fost depășit. Dacă utilizați găzduire partajată și niciuna dintre soluții nu funcționează pentru dvs., atunci contactați furnizorul dvs. de găzduire pentru a verifica care sunt restricțiile dvs. reale și dacă acestea pot fi modificate.

Dacă dezvoltați un proiect mare, procesarea unor date poate dura mult. Diferitele site-uri de găzduire au propriile limite cu privire la astfel de acțiuni, iar dacă nevoia de a crește acest timp v-a adus aici, atunci vă voi spune în detaliu cum se poate face acest lucru.

Ca să înțelegeți despre ce vorbim, vă voi da un mic exemplu. Dacă depășiți intervalul de timp stabilit, este posibil să primiți următoarea eroare:

Eroare fatală: Timpul maxim de execuție de 30 de secunde depășit în site.php pe linia 19

Vă voi spune despre 4 moduri de a scăpa de el.

Dar merită să începem cu faptul că, în fiecare caz individual, este posibil ca toate metodele enumerate să nu funcționeze, deoarece unii furnizori de găzduire interzic ei înșiși modificarea acestui parametru.

Creșterea timpului de execuție a unui script PHP prin fișierul de configurare php.ini

Ca primă modalitate de a mări timpul de execuție a scriptului, vom folosi fișierul de configurare php.ini.

Pentru a afla exact unde se află acest fișier, citiți.

Deschideți-l într-un mod convenabil pentru dvs. și introduceți în partea de jos:

Timp_max._execuție = 300;

Unde " 300 „înseamnă 300 de secunde (schimbarea la a ta). Acest fișier, din păcate, nu este disponibil pentru editare de către utilizatori pe toate site-urile de găzduire.

Creșterea timpului de execuție a unui script PHP prin funcția încorporată „ini_set”.

A doua metodă se bazează pe utilizarea funcției " ini_set" Îl inserați direct în fișierul script în sine, de preferință în partea de sus. Exemplu:

Aici sensul este " 300 „De asemenea, schimbi ceea ce ai nevoie în câteva secunde. Notă că atunci când utilizați PHP în modul sigur, această funcție nu va fi disponibilă.

Creșterea timpului de execuție a unui script PHP prin funcția încorporată „set_time_limit”

A treia metodă, probabil una dintre cele mai populare, este utilizarea „ set_time_limit» pentru a modifica timpul de execuție a scriptului. De asemenea, folosit direct în fișierul PHP în sine. Exemplu:

Aici " 300 „Te schimbi și la valoarea de care ai nevoie. Este recomandabil să introduceți codul în partea de sus.

Creșterea timpului de execuție a unui script PHP prin fișierul .htaccess

Ultima opțiune este editarea fișierului .htaccess, care se află la rădăcina site-ului dvs. (dacă nu există, creați-l).

În partea de sus a acestui fișier lipiți:

Php_value max_execution_time 300

Sens " 300 „Îl schimbi și tu cu al tău.

Notă, că în toate cazurile timpul de execuție a scriptului este indicat în secunde. În plus, valoarea parametrului în toate metodele poate lua „ 0 „, ceea ce înseamnă timp de execuție nelimitat.

Cum pot afla cât timp este alocat pentru a executa un script PHP?

După ce ați încercat să modificați timpul de execuție a scriptului folosind una dintre metode, trebuie să aflați dacă ați reușit cu adevărat.

Pentru a face acest lucru, creați un fișier PHP în rădăcina site-ului dvs., unde veți scoate valoarea timpului setat:

Daca timpul este egal cu ceea ce ai indicat, felicitari, ti-ai atins scopul dorit. În caz contrar, citește din nou articolul, scrie în comentarii despre problema ta sau trimite-l furnizorului tău de găzduire.

Dacă dezvoltați un proiect mare, procesarea unor date poate dura mult. Diferitele site-uri de găzduire au propriile limite cu privire la astfel de acțiuni, iar dacă nevoia de a crește acest timp v-a adus aici, atunci vă voi spune în detaliu cum se poate face acest lucru.

Ca să înțelegeți despre ce vorbim, vă voi da un mic exemplu. Dacă depășiți intervalul de timp stabilit, este posibil să primiți următoarea eroare:

Eroare fatală: Timpul maxim de execuție de 30 de secunde depășit în pandoge_com.php pe linia 19

Vă voi spune despre 4 moduri de a scăpa de el.

Dar merită să începem cu faptul că, în fiecare caz individual, este posibil ca toate metodele enumerate să nu funcționeze, deoarece unii furnizori de găzduire interzic ei înșiși modificarea acestui parametru.

Creșterea timpului de execuție a unui script PHP prin fișierul de configurare php.ini

Ca primă modalitate de a mări timpul de execuție a scriptului, vom folosi fișierul de configurare php.ini.

Pentru a afla exact unde se află acest fișier, citiți.

Deschideți-l într-un mod convenabil pentru dvs. și introduceți în partea de jos:

Timp_max._execuție = 300;

Unde " 300 „înseamnă 300 de secunde (schimbarea la a ta). Acest fișier, din păcate, nu este disponibil pentru editare de către utilizatori pe toate site-urile de găzduire.

Creșterea timpului de execuție a unui script PHP prin funcția încorporată „ini_set”.

A doua metodă se bazează pe utilizarea funcției " ini_set" Îl inserați direct în fișierul script în sine, de preferință în partea de sus. Exemplu:

Aici sensul este " 300 „De asemenea, schimbi ceea ce ai nevoie în câteva secunde. Notă că atunci când utilizați PHP în modul sigur, această funcție nu va fi disponibilă.

Creșterea timpului de execuție a unui script PHP prin funcția încorporată „set_time_limit”

A treia metodă, probabil una dintre cele mai populare, este utilizarea „ set_time_limit» pentru a modifica timpul de execuție a scriptului. De asemenea, folosit direct în fișierul PHP în sine. Exemplu:

Aici " 300 „Te schimbi și la valoarea de care ai nevoie. Este recomandabil să introduceți codul în partea de sus.

Creșterea timpului de execuție a unui script PHP prin fișierul .htaccess

Ultima opțiune este editarea fișierului .htaccess, care se află la rădăcina site-ului dvs. (dacă nu există, creați-l).

În partea de sus a acestui fișier lipiți:

Php_value max_execution_time 300

Sens " 300 „Îl schimbi și tu cu al tău.

Notă, că în toate cazurile timpul de execuție a scriptului este indicat în secunde. În plus, valoarea parametrului în toate metodele poate lua „ 0 „, ceea ce înseamnă timp de execuție nelimitat.

Cum pot afla cât timp este alocat pentru a executa un script PHP?

După ce ați încercat să modificați timpul de execuție a scriptului folosind una dintre metode, trebuie să aflați dacă ați reușit cu adevărat.

Pentru a face acest lucru, creați un fișier PHP în rădăcina site-ului dvs., unde veți scoate valoarea timpului setat:

Daca timpul este egal cu ceea ce ai indicat, felicitari, ti-ai atins scopul dorit. În caz contrar, citește din nou articolul, scrie în comentarii despre problema ta sau trimite-l furnizorului tău de găzduire.

De la autor: fiul prietenului meu a devenit atât de interesat de chimie încât a început să efectueze diverse „teste” acasă. După ce candelabru din bucătărie a devenit „victima” lor, tatăl său i-a cerut să-și schimbe preferințele. Drept urmare, copilul a devenit interesat de statistici și a decis să calculeze durata medie de ardere a unui meci. Rezultatul a fost că întregul apartament aproape că a luat foc. L-am sfătuit pe viitorul om de știință să înceapă programarea și să stabilească timpul de execuție al scriptului PHP.

De ce măsurători în programare?

În primul rând, este mai sigur decât chimia și statistica. Dar, de fapt, timpul de execuție a codului programului este un parametru important care afectează performanța întregii resurse și a modulelor sale individuale. Acest parametru este mai solicitat în timpul optimizării și testării.

Să ne imaginăm puțin. Să ne imaginăm că există un fel de motor „scris acasă”, pe care dezvoltatorul l-a „încărcat” pe o găzduire bună și și-a lansat (pe baza acestuia) site-ul web. Dar din anumite motive, încărcarea resursei din partea utilizatorului este foarte lentă.

Într-o astfel de situație, inițial toate denivelările vor cădea pe hoster. Cel mai probabil, un programator supărat va depune o plângere la serviciul de asistență pentru găzduire. Ei spun că nu sunt îndepliniți termenii contractului, site-ul abia „viu”...

Dar, de fapt, problema încărcării lente a paginilor unei resurse dinamice poate fi ascunsă în motorul însuși. Și pentru a nu arăta mai târziu ca un „manifest”, un dezvoltator cu experiență măsoară întotdeauna timpul de execuție al unui script PHP înainte de a livra un proiect.

Caracteristici PHP

Întotdeauna l-am numit unul dintre cele mai convenabile limbaje de programare. Pentru a urmări timpul de rulare a codului, dezvoltatorul nu trebuie să scrie „talmuduri” lungi pentru a intercepta fiecare linie a scriptului. Această tehnologie implementează mai multe instrumente specializate. Principala este funcția microtime(). Returnează timpul (în milisecunde) care a trecut de la începutul anului 1970. Așa-numitul „început al erei Unix”. Dacă treceți parametrul get_as_float funcției cu valoarea true, atunci aceasta va returna perioada de timp sub formă de secunde întregi și fracțiuni de milisecunde.

Principiul utilizării microtime() este următorul: funcția este apelată la începutul scriptului și la sfârșitul acestuia. Apoi valoarea inițială este scăzută din ultima valoare. Iată cum se calculează timpul de execuție al unui script:

"; $last=microtime(true); $value=$last-$first; echo "Scriptul este executat în: ".$value; ?>

Modificarea timpului de rulare a codului

În PHP, valoarea timpului de rulare a scriptului poate fi limitată programatic (scăderea sau creșterea). Pentru a face acest lucru, sunt folosite mai multe funcții, fiecare dintre acestea suprascriind un parametru setat în fișierul de configurare (php.ini).
În primul rând, să ne modificăm codul și să creștem numărul de iterații în buclă de 20 de ori, până la 200 de milioane. Dacă totul este bine, atunci după rularea scriptului ar trebui să primiți un mesaj de eroare fatală.

Aceasta înseamnă că în setări parametrul max_execution_time este setat la valoarea implicită (30 de secunde). Să creștem timpul maxim de execuție al unui script în PHP de 3 ori.

set_time_limit(90);

Acum nu primim niciun mesaj de eroare.