我遇到了...烦人,我猜...在我使用的应用程序中使用自定义错误处理程序,我希望这里有人可以提供一些见解。
作为我们网站数据聚合的一部分,自定义爬虫和解析器是在我们的代码库之外单独构建的。它们存储在数据库中,并通过 eval 在 gearman 进程内运行。
设置了一个自定义错误处理程序,如果出现错误(例如,如果在正则表达式中忘记了分隔符,或者当我没有喝咖啡时出现除以零错误),则插入正在运行的公司的 ID 号。在大多数情况下,这个错误处理程序工作得很好。
但是,我注意到如果 eval'd 代码中有未终止的注释,则不使用错误处理程序,因此 php 错误日志不包含有问题的公司的 ID 号。
我们在处理程序中处理以下错误类型
- E_WARNING
- E_USER_WARNING
- E_ERROR
- E_USER_ERROR
日志指出注释字符串错误是“警告”,所以我不知道为什么没有调用自定义处理程序。
有什么想法吗?