За последние 24 часа нас посетили 17573 программиста и 1718 роботов. Сейчас ищут 829 программистов ...

Обработка ошибок: как победить Fatal Error?

Тема в разделе "Прочие вопросы по PHP", создана пользователем G_M_S, 10 фев 2008.

  1. G_M_S

    G_M_S Активный пользователь

    С нами с:
    9 фев 2008
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Харьков
    Доброго времени суток!

    Проблема состоит в следующем: прикручиваю к скрипту свой обработчик ошибок при помощи функции set_error_handler. Однако он не отлавливает ошибки типа Fatal Error (возникающие при Memory Limit Exceed и Script Execution Time...) А мне необходимо корректно завершить работу скрипта в случае возникновения подобной ошибки. Точнее - удалить блокировку запуска второй копии скрипта. Это баг РНР, моя криворукость или фича?

    Вот простейший образец:

    Код (Text):
    1.  
    2.   set_time_limit(10);
    3.   error_reporting(E_ALL);
    4.   function ErrH($errno, $errmsg, $filename, $linenum, $vars) {
    5.     echo 'TEST_EXCEPTION: '.$errmsg;
    6.   }
    7.   $handler = set_error_handler("ErrH");
    8.   $i = 1;
    9.   while($i > 0){
    10.     $dummy = 1;
    11.   }
    Если сделать
    Код (Text):
    1. $dummy = 1/0;
    то все Ок - вылетает мое сообщение. Как быть? Можно ли этим обработчиком отловить Fatal Error, и если нет - то есть ли еще какие-нибудь способы его отлова?
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  3. G_M_S

    G_M_S Активный пользователь

    С нами с:
    9 фев 2008
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Харьков
    Спасибо! :))) Что документированное и сам успел прочитать, а вот за метод борьбы с этой фигней - огромное СПС :)))