Zvýšte čas vykonávania skriptu. Zvýšený čas vykonávania skriptu PHP s Nginx. Prečo merania v programovaní?

Ak máte veľký projekt alebo server s obmedzenými zdrojmi, často sa vám zobrazí chyba „504 Gateway Time-out“.

Ak chcete zvýšiť hodnotu časového limitu, postupujte podľa krokov uvedených nižšie. V PHP je predvolená hodnota 30 sekúnd.

Zmeny v php.ini

Ak chcete zmeniť maximálny čas vykonávania skriptov PHP z 30 sekúnd (predvolené) na 300 sekúnd.

Nano /etc/php5/fpm/php.ini

Inštalácia...

Max_execution_time = 300

V Apache PHP beží ako modul, tieto zmeny budú stačiť. V našom prípade však musíme urobiť zmeny na niekoľkých ďalších miestach.

Zmeny v PHP-FPM

Je to potrebné, ak ste predtým zrušili komentár k parametru request_terminate_timeout. Štandardne je zakomentovaný a preberá nájdenú hodnotu max_execution_time z php.ini

Otvára sa...

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

Inštaluje sa...

Request_terminate_timeout = 300

Zmeny v konfigurácii Nginx

Zvýšenie časového limitu pre jednu doménu example.com

Umiestnenie nano /etc/nginx/sites-available/example.com ~ \.php$ (zahŕňa /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }

Ak chcete zvýšiť časový limit pre všetky domény na vašom serveri, môžete upraviť hlavný konfiguračný súbor nginx.conf:

Nano /etc/nginx/nginx.conf

Pridajte nasledujúci parameter do sekcie http(..).

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

Dostali ste niekedy chybu? Závažná chyba: Prekročený maximálny čas vykonania 30 sekúnd vo WordPresse? Táto chyba znamená, že spustený PHP skript si vyžiadal viac času na dokončenie, než je nastavený limit a skript bol kvôli tomu zastavený. Táto príručka vám pomôže pochopiť otázku, ako zvýšiť čas vykonávania skriptu v PHP a tým vyriešiť vzniknutú chybu.

Pred spustením tejto príručky skontrolujte, či máte:

  • Prístup do administratívnej konzoly vašej stránky WordPress (v angličtine)

Krok 1 – Nainštalujte doplnok WP Maximum Execution Time Exceeded

WordPress má obrovskú komunitu, takže existuje praktický doplnok alebo niekoľko pre každú funkciu, ktorú potrebujete. Naša situácia nie je výnimkou; na zvýšenie času vykonávania skriptu v PHP môžete použiť doplnok WP Maximum Execution Time Exceeded a opraviť vzniknutú chybu. Podrobný návod ako nainštalovať WordPress plugin nájdete.

Tento doplnok vykonáva zmeny v súbore .htaccess a zvyšuje časové limity vykonávania skriptu. Po nainštalovaní pluginu už nemusíte robiť nič iné, všetko už robí plugin. Plugin nemá stránku nastavení, takže ak chcete vrátiť predchádzajúce nastavenia, jednoducho plugin vymažte a .htaccess sa vráti do pôvodnej podoby.

Krok 2 – Manuálna úprava súboru .htaccess

Ak už máte nainštalovaných veľa pluginov a nechcete použiť ďalší alebo vám to jednoducho nepomohlo zbaviť sa chyby, môžete vykonať zmeny v súbore .htaccess manuálne, aby ste zvýšili maximálne spustenie lehota. Najjednoduchší spôsob použitia Správca súborov nachádza vo vašom ovládacom paneli. Ak neviete, ako nájsť súbor .htaccess, pozrite si podrobné pokyny. Budete musieť zadať nasledujúci kód do súboru .htaccess v spodnej časti a uložiť ho kliknutím Uložiť:

Php_value max_execution_time 60

Tým sa zvýši hodnota parametra max_execution_time a v prípade PHP aj čas vykonania skriptu na 60 sekúnd (1 minúta). Ak sa táto chyba stále zobrazuje, skúste ju zvýšiť ešte viac – až na 120/180 sekúnd atď.

Krok 3 – Zmena hodnoty max_execution_time v cPaneli

Ak používate cPanel, môžete zvýšiť parameter max_execution_time priamo cez cPanel. Prejdite do sekcie Vyberte verziu PHP (Vyberte verziu PHP).

Zvýšte hodnotu, ktorú vidíte v riadku max_execution_time. Zvyčajne je štandardne nastavená na 30 sekúnd, v našom príklade sme ju zvýšili na 60 sekúnd. Kliknite Použiť(Použiť) na uloženie zmien.

To je všetko, úspešne ste zvýšili hodnotu limitného parametra max_execution_time pre váš web.

Záver

Podľa tohto návodu ste sa naučili 3 spôsoby, ako zvýšiť max_execution_time pre WordPress, zmeniť čas vykonávania skriptu v PHP a zbaviť sa chyby Závažná chyba: Bol prekročený maximálny čas vykonania. Ak používate zdieľaný hosting a žiadne z riešení pre vás nefunguje, obráťte sa na svojho poskytovateľa hostingu, aby ste skontrolovali, aké sú vaše skutočné obmedzenia a či sa dajú vôbec zmeniť.

Ak vyvíjate veľký projekt, spracovanie niektorých údajov môže trvať veľa času. Rôzne hostingové stránky majú svoje vlastné limity na takéto akcie, a ak vás sem priviedla potreba zvýšiť tento čas, potom vám podrobne poviem, ako to možno urobiť.

Aby ste pochopili, o čom hovoríme, uvediem malý príklad. Ak prekročíte nastavený časový rámec, môže sa zobraziť nasledujúca chyba:

Závažná chyba: V site.php na riadku 19 bol prekročený maximálny čas vykonania 30 sekúnd

Poviem vám o 4 spôsoboch, ako sa toho zbaviť.

Ale stojí za to začať s tým, že v každom jednotlivom prípade nemusia všetky uvedené metódy fungovať, pretože niektorí poskytovatelia hostingu zakazujú zmenu tohto parametra sami.

Zvýšenie času vykonávania skriptu PHP prostredníctvom konfiguračného súboru php.ini

Ako prvý spôsob, ako zvýšiť čas vykonávania skriptu, použijeme konfiguračný súbor php.ini.

Ak chcete zistiť, kde presne sa tento súbor nachádza, prečítajte si.

Otvorte ho spôsobom, ktorý vám vyhovuje, a vložte ho úplne dole:

Max_execution_time = 300;

Kde " 300 "znamená 300 sekúnd (zmena na svoje). Tento súbor, žiaľ, nie je k dispozícii na úpravu pre používateľov na všetkých hostiteľských stránkach.

Zvýšenie času vykonávania skriptu PHP pomocou vstavanej funkcie „ini_set“.

Druhá metóda je založená na použití funkcie " ini_set" Vložíte ho priamo do samotného súboru skriptu, najlepšie úplne hore. Príklad:

Tu je význam " 300 „Za pár sekúnd sa tiež zmeníte na to, čo potrebujete. Poznámkaže pri používaní PHP v núdzovom režime nebude táto funkcia dostupná.

Zvýšenie času vykonávania skriptu PHP pomocou vstavanej funkcie „set_time_limit“

Tretia metóda, pravdepodobne jedna z najpopulárnejších, je použitie „ set_time_limit» ak chcete zmeniť čas vykonania skriptu. Používa sa aj priamo v samotnom súbore PHP. Príklad:

Tu " 300 „tiež zmeníte na hodnotu, ktorú potrebujete. Odporúča sa vložiť kód úplne hore.

Zvýšenie času vykonávania skriptu PHP prostredníctvom súboru .htaccess

Poslednou možnosťou je úprava súboru .htaccess, ktorý sa nachádza v koreňovom adresári vášho webu (ak neexistuje, vytvorte ho).

Úplne hore na tento súbor prilepte:

Php_value max_execution_time 300

význam " 300 „Tiež si to zmeníš na svoje.

Poznámka, že vo všetkých prípadoch je čas vykonania skriptu uvedený v sekundách. Okrem toho môže hodnota parametra vo všetkých metódach trvať „ 0 “, čo znamená neobmedzený čas vykonania.

Ako zistím, koľko času je vyhradené na spustenie PHP skriptu?

Potom, čo ste sa pokúsili zmeniť čas vykonávania skriptu pomocou jednej z metód, musíte zistiť, či ste skutočne uspeli.

Ak to chcete urobiť, vytvorte súbor PHP v koreňovom adresári vašej stránky, kde vypíšete hodnotu nastaveného času:

Ak sa čas rovná tomu, čo ste uviedli, gratulujeme, dosiahli ste vytúžený cieľ. V opačnom prípade si znova prečítajte článok, napíšte do komentárov svoj problém alebo ho pošlite svojmu poskytovateľovi hostingu.

Ak vyvíjate veľký projekt, spracovanie niektorých údajov môže trvať veľa času. Rôzne hostingové stránky majú svoje vlastné limity na takéto akcie, a ak vás sem priviedla potreba zvýšiť tento čas, potom vám podrobne poviem, ako to možno urobiť.

Aby ste pochopili, o čom hovoríme, uvediem malý príklad. Ak prekročíte nastavený časový rámec, môže sa zobraziť nasledujúca chyba:

Závažná chyba: V pandoge_com.php na riadku 19 bol prekročený maximálny čas vykonania 30 sekúnd

Poviem vám o 4 spôsoboch, ako sa toho zbaviť.

Ale stojí za to začať s tým, že v každom jednotlivom prípade nemusia všetky uvedené metódy fungovať, pretože niektorí poskytovatelia hostingu zakazujú zmenu tohto parametra sami.

Zvýšenie času vykonávania skriptu PHP prostredníctvom konfiguračného súboru php.ini

Ako prvý spôsob, ako zvýšiť čas vykonávania skriptu, použijeme konfiguračný súbor php.ini.

Ak chcete zistiť, kde presne sa tento súbor nachádza, prečítajte si.

Otvorte ho spôsobom, ktorý vám vyhovuje, a vložte ho úplne dole:

Max_execution_time = 300;

Kde " 300 "znamená 300 sekúnd (zmena na svoje). Tento súbor, žiaľ, nie je k dispozícii na úpravu pre používateľov na všetkých hostiteľských stránkach.

Zvýšenie času vykonávania skriptu PHP pomocou vstavanej funkcie „ini_set“.

Druhá metóda je založená na použití funkcie " ini_set" Vložíte ho priamo do samotného súboru skriptu, najlepšie úplne hore. Príklad:

Tu je význam " 300 „Za pár sekúnd sa tiež zmeníte na to, čo potrebujete. Poznámkaže pri používaní PHP v núdzovom režime nebude táto funkcia dostupná.

Zvýšenie času vykonávania skriptu PHP pomocou vstavanej funkcie „set_time_limit“

Tretia metóda, pravdepodobne jedna z najpopulárnejších, je použitie „ set_time_limit» ak chcete zmeniť čas vykonania skriptu. Používa sa aj priamo v samotnom súbore PHP. Príklad:

Tu " 300 „tiež zmeníte na hodnotu, ktorú potrebujete. Odporúča sa vložiť kód úplne hore.

Zvýšenie času vykonávania skriptu PHP prostredníctvom súboru .htaccess

Poslednou možnosťou je úprava súboru .htaccess, ktorý sa nachádza v koreňovom adresári vášho webu (ak neexistuje, vytvorte ho).

Úplne hore na tento súbor prilepte:

Php_value max_execution_time 300

význam " 300 „Tiež si to zmeníš na svoje.

Poznámka, že vo všetkých prípadoch je čas vykonania skriptu uvedený v sekundách. Okrem toho môže hodnota parametra vo všetkých metódach trvať „ 0 “, čo znamená neobmedzený čas vykonania.

Ako zistím, koľko času je vyhradené na spustenie PHP skriptu?

Potom, čo ste sa pokúsili zmeniť čas vykonávania skriptu pomocou jednej z metód, musíte zistiť, či ste skutočne uspeli.

Ak to chcete urobiť, vytvorte súbor PHP v koreňovom adresári vašej stránky, kde vypíšete hodnotu nastaveného času:

Ak sa čas rovná tomu, čo ste uviedli, gratulujeme, dosiahli ste vytúžený cieľ. V opačnom prípade si znova prečítajte článok, napíšte do komentárov svoj problém alebo ho pošlite svojmu poskytovateľovi hostingu.

Od autora: syna môjho priateľa zaujala chémia natoľko, že začal doma robiť rôzne „testy“. Keď sa luster v kuchyni stal ich „obeťou“, jeho otec ho požiadal, aby zmenil svoje preferencie. V dôsledku toho sa dieťa začalo zaujímať o štatistiky a rozhodlo sa vypočítať priemerný čas horenia jedného zápasu. Výsledkom bolo, že celý byt takmer začal horieť. Poradil som budúcemu vedcovi, aby začal programovať a nastavil čas vykonania PHP skriptu.

Prečo merania v programovaní?

V prvom rade je to bezpečnejšie ako chémia a štatistika. Ale v skutočnosti je čas vykonávania programového kódu dôležitým parametrom, ktorý ovplyvňuje výkon celého zdroja a jeho jednotlivých modulov. Tento parameter je viac žiadaný pri optimalizácii a testovaní.

Poďme sa trochu predstaviť. Predstavme si, že existuje nejaký „doma napísaný“ engine, ktorý vývojár „nahral“ na dobrý hosting a spustil (na jeho základe) svoju webovú stránku. Z nejakého dôvodu je však načítanie zdroja na strane používateľa veľmi pomalé.

V takejto situácii spočiatku všetky hrbole padnú na hostiteľa. S najväčšou pravdepodobnosťou nahnevaný programátor podá sťažnosť na službu podpory hostingu. Hovoria, že podmienky zmluvy sa neplnia, stránka je sotva „nažive“...

Ale v skutočnosti môže byť problém pomalého načítania stránok dynamického zdroja skrytý v samotnom motore. A aby ste neskôr nevyzerali ako „atrapa“, skúsený vývojár vždy pred dodaním projektu zmeria čas vykonania PHP skriptu.

Vlastnosti PHP

Vždy som to nazýval jedným z najpohodlnejších programovacích jazykov. Na sledovanie doby chodu kódu vývojár nemusí písať dlhé „talmudy“, aby zachytil každý riadok skriptu. Táto technológia implementuje niekoľko špecializovaných nástrojov. Tou hlavnou je funkcia microtime(). Vracia čas (v milisekundách), ktorý uplynul od začiatku roku 1970. Takzvaný „začiatok éry Unixu“. Ak funkcii odošlete parameter get_as_float s hodnotou true, vráti časové obdobie vo forme celých sekúnd a zlomkov milisekúnd.

Princíp použitia microtime() je nasledovný: funkcia sa volá na začiatku skriptu a na jeho konci. Potom sa počiatočná hodnota odpočíta od poslednej hodnoty. Tu je postup, ako vypočítať čas vykonania skriptu:

"; $last=microtime(true); $value=$posledný-$prvý; echo "Skript je spustený v: ".$value; ?>

Zmena doby chodu kódu

V PHP môže byť hodnota času behu skriptu obmedzená programovo (zníženie alebo zvýšenie). Na to slúži niekoľko funkcií, z ktorých každá prepíše sadu parametrov v konfiguračnom súbore (php.ini).
Najprv upravme náš kód a zvýšme počet iterácií slučky 20-krát na 200 miliónov. Ak je všetko v poriadku, po spustení skriptu by ste mali dostať fatálne chybové hlásenie.

To znamená, že v nastaveniach je parameter max_execution_time nastavený na predvolenú hodnotu (30 sekúnd). Zvýšme maximálny čas vykonávania skriptu v PHP 3-krát.

set_time_limit(90);

Teraz nedostávame žiadne chybové hlásenia.