Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak obsłużyć błąd typu "maximum execution time limit"?
Forum PHP.pl > Forum > PHP
koodlaty
W ogóle da się?
legorek
Nie da się "obsłużyć" tego błedu. Ale starać się go uniknąć.

Przyjmijmy że wykonujesz jakieś operacje w pętli, powiedzmy wysyłanie poczty. Przy każdej iteracji:
- oblicz średni czas wykonywania jednej iteracji (czas od początku skryptu podzielony przez liczebe iteracji
- dodaj go czasu, który minął od początku skryptu. jeśli wyjdzie Ci wiecej niż maximum execution time limit przerwij petle.

Oczywiście powinieneś sobie zostawić lekki zapas na zakończenie skryptu.

Potem mozesz przeladowac strone i zaczac od miejsca w którym skończyłeś.

Rozwiązanie jest elastyczne, bo samo dostosuje sie do obciazenia serwera. Ale przyda sie tylko gdy skrypt dziala w petli.

Jeśli potrzebujesz wykonać jakieś skomplikowane operacje np. na obrazkach, może warto przenieść je po za php i uruchomić w tle.
franki01
Ja robie takie cos ze na poczatku pobieram czas w sekundach (time()) i potem w petli sprawdzam, czy czas jest wiekszy np niz 50 sekund od rozpoczecia skryptu (odejmujac czas aktualny od poczatkowego)... W miare uniwersalne, bo moze podobnie dzialac na szybkich maszynach i wolniejszych, nie robiac zbyt czestych przekierowan.
kurt
z manuala:
...Skrypt może zostać również zakończony przez wbudowany licznik czasu. Domyślnie czas ten wynosi 30 sekund. Wartość tę można zmienić używając opcji max_execution_time w php.ini, jak również dyrektywy Apache php_value max_execution_time lub funkcji set_time_limit(). Kiedy czas na wykonanie się skończy, skrypt zostanie przerwany podobnie jak w przypadku rozłączenia się klienta (patrz wyżej). Jeśli funkcja zamykająca była zarejestrowana, zostanie wywołana. Wewnątrz funkcji zamykającej możesz sprawdzić czy została ona wywołana wskutek przekroczenia czasu. Do tego celu użyj funkcji connection_status(). Funkcja zwróci 2, jeśli to przekroczenie limitu czasu spowodowało wywołanie funkcji zamykającej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.