PHP错误仅记录日志

时间:2014-04-17 16:04:12

标签: php debugging batch-file

我正在使用PHP-CLI按计划生成业务报告的XML文件。我有错误报告,因为我的XML中的错误会破坏文件。

通常,脚本会遍历大约11000种产品,检查价格变化并保留数量和履行渠道数据的记录。

99%的时间脚本完美运行。但有时它在经过几千种产品后因某种原因而中断。它似乎不可重复。当我在工作时,它永远不会发生。

所以在我的脚本中(为了保护有效的xml),我有error_reporting(0);。该脚本是命令行(win7)的管道输出,如下所示:c:\...\php.exe -f c:\...\testXMLUpdater.php > "C:\...\Database.xml".

我相信我不能使用批处理文件错误管道2>,因为它来自PHP CLI,并且当我观察批处理文件运行时不会显示错误。我知道错误发生在php而不是批处理文件中,因为php输出不完整但批处理文件正确完成。

从我所看到的有两个选项:
1.将php错误写入有效的xml <error>Error Info</error>
2.找到一些方法将错误输出定向到日志。

有关如何做其中任何一项的任何想法?是首选吗?

错误日志中有问题的日期没有错误,或者其他时候出错。在编写代码时,有很多错误。

1 个答案:

答案 0 :(得分:1)

您应该启用error_reporting,但也要让PHP记录这些错误而不是输出它们:http://php.net/manual/en/errorfunc.configuration.php#ini.error-log

同样,如果输出损坏是一个问题,那么您不应该将输出转储到stdout并重定向到文件。相反,让PHP直接将生成的文本写入文件,例如

$out = fopen('Database.xml', 'wb');
fwrite($out, '<xml>.....</xml>');

这样的方式无论PH​​P barfs为什么错误,它都永远不会到达你的输出文件,因为PHP的错误发生在一个完全不同的位置(stdout / logs)。