obsluga bledu limitu czasu w php 4*

0

Do obslugi bledow mozna wykorzystac:

http://pl.php.net/manual/pl/function.set-error-handler.php

Niby wszystko pieknie. A jak obsluzyc blad, gdy uplynie limit czasy wykonywania skryptu? Probowalem ustawic skrypt na 10 sekund i nic nie obslugije, tylko sam wyswietla standardowy komunikat:

Kod:

<?

 error_reporting(E_ERROR);

function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars) 
{
 echo 'error';
}

  set_time_limit(10);
  $old_error_handler = set_error_handler("userErrorHandler",E_ERROR);

 $x = 0;
 
 $y = 0;
 while (!$x)
 {
   $y++;
 }
 
?>  

Po 10 sekundach widnieje:

Fatal error: Maximum execution time of 10 seconds exceeded in c:\usr\strona\index.php on line 19

0

i tak wlasnie ludzie czytaja dokumentacje/manuale/posty itp zamiast przeczytac wszystko tylko zaczna i pozniej wielkie problemy a wyraznie jest napisane ;]

Notatka: The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.

te rodzaje bledow nie obsluzysz
poza tym nie wiem czy wiesz ale bledy tak na marginesie powinno sie wylaczac tzn ich wyswietlanie jesli strona ma juz pracowac online, one sa przydatne wylacznei w celach debugowania skryptow normalnie powinny byc ukryte gdy strona ujrzy swiatlo dzienne wiec problem czy tak czy tak masz rozwiazany po prostu je wylacz

0

Dzieki, ale mylisz sie. :] Nie jest to problem rozwiazany bo zalezy mi, jezeli minie limit dzialania testu chcialem obsluzyc go dlatego aby moc wyswietlic wynik wykonania skryptu. Skrypt dziala bardzo dlugo (w panelu administracyjnym) gdy sciaga pewne dane z innego serwera, ktory jest czesto dosc obciazony. Nie moge wylaczyc limitu czasu (set_time_limit(0)), dlatego, ze dzialanie skryptu przedluza sie czasami do ponad 5 minut a tyle mniej wiecej najdluzej dzialaja przegladarki ladujac strone. W takim razie pozostalo mi zostawic to jak jest.

0

zawsze mozesz buforowac to co wykonuje twoj skrypt i wysylac to partiami do przegladarki klienta w ten sposob przegladarka nie wyswietli timeout

0

Chodzi Tobie o ob_start(), flush() itp? Zeby co pewien czas wysylac no nie wiem: echo ' '; ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1