Maximum execution time of 30 seconds exceeded

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Znaczenie komunikatu

Błąd oznacza, że maksymalny czas wykonania skryptu został przekroczony. Domyślnie jest to 30 sekund. Najczęściej błąd jest spowodowany niekończącą się pętlą w kodzie skryptu, lub nieudaną próbą połączenia z zewnętrznym serwerem.

Przykład 1

while(1){ // taka pętla nigdy się nie skończy
 
}

Przykład 2

for($i = 0; $i < 20; $i++){
  if($i<19){
    echo $i;
  } else {
    $i = 0;
  }
}

Podobnie jak w przykładzie 1, tutaj pętla nie skończy się nigdy, więc po 30 sekundach wystąpi błąd o przekroczeniu dopuszczalnego czasu wykonywania skryptu.

Rozwiązanie problemu

Czas wykonywania możemy ustawić w pliku konfiguracyjnym, lub za pomocą funkcji set_time_limit(), jeżeli jest wyłączony tryb safe_mode.

Przykład: użycie funkcji set_time_limit()

set_time_limit(50); //ustawiamy czas wykonywania skryptu na 50 sek.
set_time_limit(0); //ustawiamy czas na 0, czyli skrypt może wykonywać się do woli

Przykład: użycie set_ini do ustawienia zmiennej w pliku php.ini

$stara_wartosc = ini_set ( 'max_execution_time', 50 );

Pod zmienną $stara_wartosc, będziemy mieli poprzednią wartość (standardowo 30), bądź false, jeżeli nie uda się ustawić zmiennej (w przypadku, kiedy jest włączony tryb bezpieczny).

Linki zewnętrzne


Jest to element FAQ, czyli zestawienia odpowiedzi na najczęściej zadawane pytania.

Zestawienie: Informacje | Podstawy PHP | Porady praktyczne | Pytania z forum | Bezpieczeństwo