Zwiększ czas wykonywania skryptu. Zwiększony czas wykonywania skryptu PHP w Nginx. Dlaczego pomiary w programowaniu?

Jeśli masz duży projekt lub serwer z ograniczonymi zasobami, często zobaczysz błąd „Przekroczono limit czasu bramy 504”.

Aby zwiększyć wartość limitu czasu, wykonaj poniższe czynności. W PHP wartość domyślna to 30 sekund.

Zmiany w php.ini

Jeśli chcesz zmienić maksymalny czas wykonywania skryptów PHP z 30 sekund (domyślnie) na 300 sekund.

Nano /etc/php5/fpm/php.ini

Zainstalować...

Maksymalny czas_wykonania = 300

W Apache PHP działa jako moduł, te zmiany wystarczą. Ale w naszym przypadku zmian musimy dokonać jeszcze w kilku miejscach.

Zmiany w PHP-FPM

Jest to konieczne, jeśli wcześniej odkomentowałeś parametr request_terminate_timeout. Domyślnie jest on komentowany i pobiera wartość max_execution_time znalezioną w php.ini

Otwarcie...

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

Instaluję...

Limit czasu żądania_terminacji = 300

Zmiany w konfiguracji Nginx

Zwiększenie limitu czasowego dla jednej domeny przykład.com

Lokalizacja Nano /etc/nginx/sites-available/example.com ~ \.php$ ( dołącz /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }

Jeśli chcesz zwiększyć limit czasowy dla wszystkich domen na swoim serwerze, możesz edytować główny plik konfiguracyjny nginx.conf:

Nano /etc/nginx/nginx.conf

Dodaj następujący parametr do sekcji http(..).

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

Czy kiedykolwiek otrzymałeś błąd Błąd krytyczny: przekroczono maksymalny czas wykonania wynoszący 30 sekund w WordPressie? Ten błąd oznacza, że ​​działający skrypt PHP wymagał więcej czasu na wykonanie niż ustawiony limit i z tego powodu skrypt został zatrzymany. Ten przewodnik pomoże Ci zrozumieć pytanie, jak wydłużyć czas wykonywania skryptu w PHP, a tym samym rozwiązać powstały błąd.

Przed rozpoczęciem korzystania z tego przewodnika sprawdź, czy posiadasz:

  • Dostęp do Konsoli administracyjnej Twojej witryny WordPress (w języku angielskim)

Krok 1 – Zainstaluj wtyczkę WP Maximum Execution Time Exceeded

WordPress ma ogromną społeczność, więc istnieje przydatna wtyczka lub kilka dla każdej potrzebnej funkcjonalności. Nasza sytuacja nie jest wyjątkiem; aby wydłużyć czas wykonania skryptu w PHP, możesz skorzystać z wtyczki WP Maximum Execution Time Exceeded i naprawić powstały błąd. Szczegółową instrukcję instalacji wtyczki WordPress znajdziesz tutaj.

Wtyczka ta wprowadza zmiany w pliku .htaccess i zwiększa limity czasu wykonania skryptu. Po zainstalowaniu wtyczki nie musisz robić nic więcej, wszystko jest już zrobione przez wtyczkę. Wtyczka nie posiada strony ustawień, więc jeśli chcesz przywrócić poprzednie ustawienia, po prostu usuń wtyczkę, a plik .htaccess powróci do pierwotnej postaci.

Krok 2 – Ręczna edycja pliku .htaccess

Jeśli masz już zainstalowanych dużo wtyczek i nie chcesz używać dodatkowej lub po prostu nie pomogło to pozbyć się błędu, możesz ręcznie wprowadzić zmiany w pliku .htaccess, aby zwiększyć maksymalną wydajność limit czasu. Najłatwiejszy sposób użycia Menedżer plików znajduje się w Panelu sterowania. Jeśli nie wiesz jak znaleźć plik .htaccess, zapoznaj się ze szczegółowymi instrukcjami. Będziesz musiał wpisać następujący kod w pliku .htaccess na dole i zapisać go, klikając Ratować:

Wartość_php max_czas_wykonania 60

Spowoduje to zwiększenie wartości parametru max_execution_time i, w przypadku PHP, czasu wykonania skryptu do 60 sekund (1 minuta). Jeśli nadal pojawia się ten błąd, spróbuj zwiększyć go jeszcze bardziej - do 120/180 sekund i tak dalej.

Krok 3 – Zmiana wartości max_execution_time w cPanel

Jeśli używasz cPanel, możesz zwiększyć parametr max_execution_time bezpośrednio poprzez cPanel. Przejdź do sekcji Wybierz wersję PHP (Wybierz wersję PHP).

Zwiększ wartość widoczną w linii max_czas_wykonania. Zwykle domyślnie jest ustawiony na 30 sekund, w naszym przykładzie zwiększyliśmy go do 60 sekund. Kliknij Stosować(Zastosuj), aby zapisać zmiany.

To wszystko, pomyślnie zwiększyłeś wartość parametru granicznego max_czas_wykonania dla Twojej witryny.

Wniosek

Postępując zgodnie z tym przewodnikiem, poznałeś 3 sposoby na zwiększenie max_czas_wykonania dla WordPressa, aby zmienić czas wykonania skryptu w PHP i pozbyć się błędu Błąd krytyczny: przekroczono maksymalny czas wykonania. Jeśli korzystasz z hostingu współdzielonego i żadne z rozwiązań nie działa dla Ciebie, skontaktuj się ze swoim dostawcą hostingu, aby sprawdzić, jakie są Twoje rzeczywiste ograniczenia i czy w ogóle można je zmienić.

Jeśli tworzysz duży projekt, przetwarzanie niektórych danych może zająć dużo czasu. Różne witryny hostingowe mają własne ograniczenia dotyczące takich działań, a jeśli potrzeba wydłużenia tego czasu sprowadziła Cię tutaj, powiem ci szczegółowo, jak można to zrobić.

Abyście zrozumieli o czym mówimy, podam mały przykład. Jeśli przekroczysz ustawiony przedział czasowy, może pojawić się następujący błąd:

Błąd krytyczny: przekroczono maksymalny czas wykonania 30 sekund w site.php w linii 19

Podam Ci 4 sposoby na pozbycie się tego.

Warto jednak zacząć od tego, że w każdym indywidualnym przypadku wszystkie wymienione metody mogą nie działać, ponieważ niektórzy dostawcy usług hostingowych zabraniają samodzielnej zmiany tego parametru.

Zwiększenie czasu wykonania skryptu PHP poprzez plik konfiguracyjny php.ini

Jako pierwszy sposób na wydłużenie czasu wykonania skryptu wykorzystamy plik konfiguracyjny php.ini.

Aby dowiedzieć się dokładnie, gdzie znajduje się ten plik, przeczytaj.

Otwórz go w dogodny dla siebie sposób i wpisz na samym dole:

Maksymalny czas_wykonania = 300;

Gdzie " 300 „oznacza 300 sekund (zamień na swoje). Plik ten niestety nie jest dostępny do edycji przez użytkowników na wszystkich witrynach hostingowych.

Zwiększenie czasu wykonania skryptu PHP poprzez wbudowaną funkcję „ini_set”.

Druga metoda opiera się na wykorzystaniu funkcji „ ini_set" Wstawiasz go bezpośrednio do samego pliku skryptu, najlepiej na samej górze. Przykład:

Tutaj znaczenie jest takie: „ 300 „W ciągu kilku sekund możesz także zmienić to, czego potrzebujesz. notatkaże podczas używania PHP w trybie awaryjnym ta funkcja nie będzie dostępna.

Zwiększenie czasu wykonania skryptu PHP poprzez wbudowaną funkcję „set_time_limit”

Trzecią metodą, prawdopodobnie jedną z najpopularniejszych, jest użycie „ Ustaw limit czasu» aby zmienić czas wykonania skryptu. Używany również bezpośrednio w samym pliku PHP. Przykład:

Tutaj " 300 „zmieniasz także wartość, której potrzebujesz. Wskazane jest wpisanie kodu na samej górze.

Zwiększenie czasu wykonania skryptu PHP poprzez plik .htaccess

Ostatnią opcją jest edycja pliku .htaccess, który znajduje się w katalogu głównym Twojej witryny (jeśli nie istnieje, utwórz go).

Na samej górze tego pliku wklej:

Wartość_php max_czas_wykonania 300

Oznaczający " 300 „Ty także zmień go na swój.

notatka, że we wszystkich przypadkach czas wykonania skryptu jest podawany w sekundach. Ponadto wartość parametru we wszystkich metodach może przyjmować „ 0 ", co oznacza nieograniczony czas realizacji.

Jak mogę dowiedzieć się, ile czasu jest przydzielone na wykonanie skryptu PHP?

Po próbie zmiany czasu wykonania skryptu jedną z metod musisz sprawdzić, czy rzeczywiście Ci się to udało.

Aby to zrobić, utwórz plik PHP w katalogu głównym swojej witryny, w którym wypiszesz wartość ustawionego czasu:

Jeśli czas jest równy wskazanemu, gratulacje, osiągnąłeś zamierzony cel. W przeciwnym razie przeczytaj artykuł jeszcze raz, napisz w komentarzach o swoim problemie lub przekaż go swojemu dostawcy usług hostingowych.

Jeśli tworzysz duży projekt, przetwarzanie niektórych danych może zająć dużo czasu. Różne witryny hostingowe mają własne ograniczenia dotyczące takich działań, a jeśli potrzeba wydłużenia tego czasu sprowadziła Cię tutaj, powiem ci szczegółowo, jak można to zrobić.

Abyście zrozumieli o czym mówimy, podam mały przykład. Jeśli przekroczysz ustawiony przedział czasowy, może pojawić się następujący błąd:

Błąd krytyczny: przekroczono maksymalny czas wykonania 30 sekund w pandoge_com.php w linii 19

Podam Ci 4 sposoby na pozbycie się tego.

Warto jednak zacząć od tego, że w każdym indywidualnym przypadku wszystkie wymienione metody mogą nie działać, ponieważ niektórzy dostawcy usług hostingowych zabraniają samodzielnej zmiany tego parametru.

Zwiększenie czasu wykonania skryptu PHP poprzez plik konfiguracyjny php.ini

Jako pierwszy sposób na wydłużenie czasu wykonania skryptu wykorzystamy plik konfiguracyjny php.ini.

Aby dowiedzieć się dokładnie, gdzie znajduje się ten plik, przeczytaj.

Otwórz go w dogodny dla siebie sposób i wpisz na samym dole:

Maksymalny czas_wykonania = 300;

Gdzie " 300 „oznacza 300 sekund (zamień na swoje). Plik ten niestety nie jest dostępny do edycji przez użytkowników na wszystkich witrynach hostingowych.

Zwiększenie czasu wykonania skryptu PHP poprzez wbudowaną funkcję „ini_set”.

Druga metoda opiera się na wykorzystaniu funkcji „ ini_set" Wstawiasz go bezpośrednio do samego pliku skryptu, najlepiej na samej górze. Przykład:

Tutaj znaczenie jest takie: „ 300 „W ciągu kilku sekund możesz także zmienić to, czego potrzebujesz. notatkaże podczas używania PHP w trybie awaryjnym ta funkcja nie będzie dostępna.

Zwiększenie czasu wykonania skryptu PHP poprzez wbudowaną funkcję „set_time_limit”

Trzecią metodą, prawdopodobnie jedną z najpopularniejszych, jest użycie „ Ustaw limit czasu» aby zmienić czas wykonania skryptu. Używany również bezpośrednio w samym pliku PHP. Przykład:

Tutaj " 300 „zmieniasz także wartość, której potrzebujesz. Wskazane jest wpisanie kodu na samej górze.

Zwiększenie czasu wykonania skryptu PHP poprzez plik .htaccess

Ostatnią opcją jest edycja pliku .htaccess, który znajduje się w katalogu głównym Twojej witryny (jeśli nie istnieje, utwórz go).

Na samej górze tego pliku wklej:

Wartość_php max_czas_wykonania 300

Oznaczający " 300 „Ty także zmień go na swój.

notatka, że we wszystkich przypadkach czas wykonania skryptu jest podawany w sekundach. Ponadto wartość parametru we wszystkich metodach może przyjmować „ 0 ", co oznacza nieograniczony czas realizacji.

Jak mogę dowiedzieć się, ile czasu jest przydzielone na wykonanie skryptu PHP?

Po próbie zmiany czasu wykonania skryptu jedną z metod musisz sprawdzić, czy rzeczywiście Ci się to udało.

Aby to zrobić, utwórz plik PHP w katalogu głównym swojej witryny, w którym wypiszesz wartość ustawionego czasu:

Jeśli czas jest równy wskazanemu, gratulacje, osiągnąłeś zamierzony cel. W przeciwnym razie przeczytaj artykuł jeszcze raz, napisz w komentarzach o swoim problemie lub przekaż go swojemu dostawcy usług hostingowych.

Od autora: Syn mojej koleżanki tak zainteresował się chemią, że zaczął przeprowadzać w domu różne „testy”. Gdy żyrandol w kuchni stał się ich „ofiarą”, ojciec poprosił go o zmianę preferencji. W rezultacie dziecko zainteresowało się statystyką i postanowiło obliczyć średni czas palenia jednej zapałki. W efekcie niemal całe mieszkanie stanęło w płomieniach. Doradziłem przyszłemu naukowcowi, aby zaczął programować i ustalił czas wykonania skryptu PHP.

Dlaczego pomiary w programowaniu?

Przede wszystkim jest bezpieczniejszy niż chemia i statystyka. Ale tak naprawdę czas wykonania kodu programu jest ważnym parametrem wpływającym na wydajność całego zasobu i jego poszczególnych modułów. Ten parametr jest bardziej pożądany podczas optymalizacji i testowania.

Wyobraźmy sobie trochę. Wyobraźmy sobie, że istnieje jakiś „domowo napisany” silnik, który programista „wgrał” na dobry hosting i uruchomił (na jego podstawie) swoją stronę internetową. Ale z jakiegoś powodu ładowanie zasobu po stronie użytkownika jest bardzo powolne.

W takiej sytuacji początkowo wszystkie nierówności spadną na hostera. Najprawdopodobniej zły programista złoży skargę w serwisie wsparcia hostingowego. Mówią, że warunki umowy nie są dotrzymywane, strona ledwo „żyje”…

Ale w rzeczywistości problem powolnego ładowania stron zasobu dynamicznego może być ukryty w samym silniku. A żeby później nie wyjść na „manekina”, doświadczony programista zawsze przed oddaniem projektu mierzy czas wykonania skryptu PHP.

Funkcje PHP

Zawsze nazywałem go jednym z najwygodniejszych języków programowania. Aby śledzić czas działania kodu, programista nie musi pisać długich „talmudów”, aby przechwycić każdą linię skryptu. W technologii tej zastosowano kilka specjalistycznych narzędzi. Główną z nich jest funkcja microtime(). Zwraca czas (w milisekundach), który upłynął od początku 1970 r., tzw. „początku ery Uniksa”. Jeśli przekażesz do funkcji parametr get_as_float z wartością true, wówczas zwróci ona okres czasu w postaci pełnych sekund i ułamków milisekund.

Zasada korzystania z microtime() jest następująca: funkcja wywoływana jest na początku skryptu i na jego końcu. Następnie od ostatniej wartości odejmuje się wartość początkową. Oto jak obliczyć czas wykonania skryptu:

"; $last=microtime(true); $value=$last-$first; echo "Skrypt jest wykonywany w: ".$value; ?>

Zmiana czasu działania kodu

W PHP wartość czasu działania skryptu można ograniczyć programowo (zmniejszyć lub zwiększyć). W tym celu wykorzystuje się kilka funkcji, z których każda nadpisuje parametr ustawiony w pliku konfiguracyjnym (php.ini).
Najpierw zmodyfikujmy nasz kod i zwiększmy liczbę iteracji pętli 20 razy do 200 milionów. Jeśli wszystko jest w porządku, to po uruchomieniu skryptu powinieneś otrzymać komunikat o błędzie krytycznym.

Oznacza to, że w ustawieniach parametr max_execution_time ustawiony jest na wartość domyślną (30 sekund). Zwiększmy maksymalny czas wykonania skryptu w PHP 3-krotnie.

set_time_limit(90);

Teraz nie otrzymujemy żadnych komunikatów o błędach.