Нечто подобное (как пример для моего комментария)
function handleShutdown(){
$lasterror = error_get_last();
if (is_null($lasterror)) {
//normal shutdown
return false;
}
//return error to client as XML, JSON etc.
// $lasterror['message']
// $lasterror['type']
// $lasterror['file']
// $lasterror['line']
}
register_shutdown_function('handleShutdown');
Я предоставлю вам информацию о том, как вы хотите отформатировать сообщение об ошибке. Обработчик выключения может даже отлавливать ошибки памяти ...:)
Очевидно, что вы не можете поймать что-либо до того, как оно будет зарегистрировано, поэтому сделайте это на ранней стадии выполнения.
php.net / manual / en / function.register-shutdown-function.php
Вы также можете посмотреть на
- set_error_handler
- set_exception_handler
Тогда вы можете иметь триединство обработки ошибок.
Вы могли бы использовать set_error_handler для их перехвата, но вы хотели бы отфильтровать ошибки определенных вершин (в обработчике ошибок), например, могут быть устаревшие ошибки или ошибки уровня уведомления. Вы можете сделать это, проверив уровень серьезности по уровню error_reporting
, который у вас есть (поразрядно), как этот
if($severity & error_reporting())
//report on these errors.
Обратите внимание, что одиночное & является побитовым сравнением и отличается от обычного AND (&&)
Теперь Если вы хотите полностью предотвратить ошибку, мне нужно будет увидеть код (включая строку, помеченную каким-либо образом), где она генерируется. В противном случае это просто дикая догадка.
В любом случае, при создании какой-либо службы, в которой отсутствует нормальный графический интерфейс, никогда не повредит восстановление после завершения работы для отправки отзыва клиенту, просто убедитесь, что все выходные данные, которыми вы делитесь с клиентами, очищаются. Таким образом, вы не «пропускаете» информацию, которая может выдать любую информацию, которая может быть использована для компрометации вашего приложения.
веселит.