PHP - последний звонок - PullRequest
       8

PHP - последний звонок

3 голосов
/ 16 июня 2011

Есть ли способ указать PHP запустить последнюю функцию или каким-то образом переопределить какой-либо обработчик ошибок в случае фатальной ошибки?У меня есть cron, у которого есть главная точка входа:

$obj = new obj();
$obj->run();
exit;

. Будет ли обтекание, что в try-catch, добьется цели, если я явно не выдаю ошибки?Все, что я хочу, это чтобы PHP сделал что-то такое же простое, как создание txt-файла, содержащего фатальную ошибку, или даже просто создание пустого файла с именем «failed.txt», или что-то в этом роде.

Спасибо!

Ответы [ 6 ]

3 голосов
/ 16 июня 2011

Вы пишете это cron. Вызовите скрипт с путем к новому файлу php.ini, в котором вы делаете PHP для записи ошибок на STDERR или STDOUT.

php -h

предоставит вам все параметры командной строки.

Cron отправит вам отчеты, если что-то не получится по электронной почте.

В качестве альтернативы вы можете настроить это для входа в свой собственный журнал, так как это новый php.ini. На случай, если вам будет легче рассмотреть.

3 голосов
/ 16 июня 2011

error_handler может помочь вам здесь

Или это для фатальных ошибок: http://insomanic.me.uk/post/229851073/php-trick-catching-fatal-errors-e-error-with-a

2 голосов
/ 16 июня 2011

Вы можете установить собственный обработчик ошибок для большинства ошибок и выполнить там некоторый код.

Но не можете обработать E_ERROR, какова, вероятно, ваша фатальная ошибка.

Представьте, что эта ошибка была из-за нехватки памяти.Вы пытаетесь справиться с этой ошибкой и в итоге используете больше памяти.Который просто выбрасывает еще одну ошибку, и вы правы, где вы начали.

1 голос
/ 16 июня 2011

Используйте register_shutdown_function(), чтобы зарегистрировать функцию для выполнения в качестве последнего вызова.Будет получен вызов независимо от того, произошла ошибка или нет.

См. http://php.net/manual/function.register-shutdown-function.php для получения дополнительной информации.

1 голос
/ 16 июня 2011

Вы можете сделать пользовательскую обработку ошибок в PHP. Обратитесь к руководству по адресу: http://php.net/function.set-error-handler. Это довольно простое применение.

0 голосов
/ 16 июня 2011

Использование

try 
{ 
    //Code
} 
catch(Exception $e)
{
     //Execute on error
}
...