![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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. |
|
|
![]()
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.
|
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 16:00 |