我在不同的时间为每个 cronjob 调用一个 php pgm。pgm 包含许多 php 文件。每个文件都向合作伙伴发送或获取数据。
我如何处理包括 pgm 在内的错误。
当时,包含的 pgm 中的一个 ftp 连接失败,因此完整的脚本崩溃了。我该如何处理?
您应该将可能崩溃的代码包装到try/catch
构造中。这将引发异常,但脚本将继续工作。更多在这里。
需要更多地了解您的代码才能给您明确的答案。
通常 php 错误是不可捕获的,除非您定义自己的错误处理程序,您自己从中抛出异常。使用下面的代码可以捕获大多数运行时错误(只要它们不被认为是致命的)
error_reporing(E_ALL);
set_error_handler(function($errno, $errstr, $errfile, $errline) {
if($errno == E_STRICT || $errno == E_DEPRECATED) {
return true;
}
throw new RuntimeException('Triggered error (code '.$errno.') with message "'.$errstr.'"');
});
顺便说一句,您还可以定义自己的异常处理程序,以在未捕获异常时显示带有完整堆栈跟踪的触发错误。
注意!我不建议您在没有经过严格测试的情况下将此代码添加到生产网站,以确保一切仍按预期工作。
编辑:
我不知道您的代码是什么样的,但我想您可以执行以下操作:
require 'error-handler.php'; // where you have your error handler (the code seen above)
$files_to_include = array(
'some-file.php',
'some-other-file.php',
...
);
foreach($files_to_include as $file) {
try {
include $file;
}
catch(Exception $e) {
echo "$file failed\nMessage: ".$e->getMessage()."\nTrace:\n".$e->getTraceAsString();
}
}