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