Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak obsłużyć błąd typu "maximum execution time limit"?
koodlaty
post
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 3
Dołączył: 6.07.2006
Skąd: Dublin

Ostrzeżenie: (0%)
-----


W ogóle da się?

Ten post edytował koodlaty 10.09.2007, 15:06:16
Go to the top of the page
+Quote Post
legorek
post
Post #2





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
franki01
post
Post #3





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kurt
post
Post #4





Grupa: Zarejestrowani
Postów: 89
Pomógł: 3
Dołączył: 14.07.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kurt 2.02.2008, 16:45:38
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 17:33