【发布时间】:2008-11-26 18:11:29
【问题描述】:
对于大多数生产站点,您希望尽快知道何时出现错误。我的问题是如何最好地获取这些信息。
通常,最好在电子邮件中获取错误,因为我不会每天坐下来查看错误日志,直到出现错误——这是不可能的,因为我在不同的地方有 20 个或更多的生产站点服务器。这些错误可能是任何东西,包括未设置的变量、收到的无效数据或查询错误。
目前我已按照PHPs websites, found here 上的示例进行操作。因此,它会创建一个文本字符串以及一个 XML 文件,然后通过电子邮件发送该文件。我对此稍作修改,以保留所有错误,直到脚本结束,然后发送附有 XML 文件的电子邮件。 (由于循环中的错误,我已经崩溃了几个发送超过 500 000 封电子邮件的邮件服务器。)大多数情况下,这可以正常工作。 (我还创建了一个对象来完成所有的错误处理。)
当wddx_serialize_value() 有大量数据流向进程时,就会出现问题。然后如果有多个错误,那么,它确实最终会使用大量内存,大多数时候超过脚本允许使用的内存。
因此,我在 XML 文件中添加了一个附加 gzcompress(),然后将其存储在变量中。这有帮助,但如果数据量非常大,它仍然会耗尽内存。 (在最近的一个案例中,它想使用大约 2GB。)
我想知道还有哪些其他解决方案,或者您如何对其进行修改以使其正常工作?
所以有几个要求:
- 它必须能够向我发送的不仅仅是错误消息,并且不应该让我登录服务器来弄清楚发生了什么(这样我就可以检查何时移动并确定它是否是紧急事件)
- 需要限制发送的电子邮件数量。最好的还是 1。
- 需要正常登录到文件
编辑:我需要与错误相关的其他信息,而不仅仅是错误字符串。通常我发现几乎不可能重现错误,因为它是由用户输入引起的,除非我获得更多信息,否则我不知道。我已尽最大努力输入信息性错误,但您永远不知道用户将如何使用系统或他们将输入什么垃圾数据。因此,我需要的不仅仅是错误文本/字符串。
编辑 2: 无法将错误记录到数据库中,因为据我所知,数据库可能不存在。需要几乎可以保证运行的东西。此外,这些网站并非都在一台服务器上,而且我经常无法访问服务器上的 cron(愚蠢的托管公司)。
【问题讨论】:
标签: php error-handling wddx