0

我在不同的时间为每个 cronjob 调用一个 php pgm。pgm 包含许多 php 文件。每个文件都向合作伙伴发送或获取数据。

我如何处理包括 pgm 在内的错误。

当时,包含的 pgm 中的一个 ftp 连接失败,因此完整的脚本崩溃了。我该如何处理?

4

2 回答 2

0

您应该将可能崩溃的代码包装到try/catch构造中。这将引发异常,但脚本将继续工作。更多在这里

于 2012-08-14T12:47:20.370 回答
0

需要更多地了解您的代码才能给您明确的答案。

通常 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();
  }
}
于 2012-08-14T12:58:28.060 回答