Я работаю над очень старым унаследованным проектом, и где-то в скрипте, запущенном cron, происходит что-то, что останавливает скрипт, и в файле остается консультативная блокировка, что вызывает дальнейшие проблемы в следующих раундах скриптов, запускаемых позжехрон.Основываясь на журналах, я более или менее точно определил, какая часть скрипта не удалась, поэтому я поместил это в блок try-finally.Однако я совершенно уверен в том, что эта часть не работает, рассматриваемый файл продолжает зависать, поэтому я подозреваю, что возникает какая-то ошибка вроде E_ERROR, которая не перехватывается, как \ Exception.Я хотел бы написать собственный обработчик ошибок с set_error_handler
, и мне нужно определить типы ошибок для обработки. Я хочу обрабатывать только ошибки, которые останавливают выполнение скрипта, мой вопрос находится рядом с E_ERROR, типы ошибок которого прерывают выполнение какхорошо?
set_error_handler('fatalErrorHandler', [E_ERROR]);
function fatalErrorHandler($errno, $errstr, $errfile, $errline){
throw new \Exception($errstr." @$errfile:$errline", $errno);
}
/* ... */
try{
// Likely defective code...
}catch(\Exception $e) {
$cronlocklog->add("cron job failed with error: ".$e->getMessage());
} finally {
flock($cronlockfd, LOCK_UN);
}