我们目前有一个错误捕获所有PHP站点的脚本。此脚本使用set_error_handler&组合。 register_shutdown_function用于捕获发生的所有错误,包括内存耗尽错误然后向我们发送电子邮件,以便我们可以响应并修复错误。
不幸的是,如果内存耗尽错误,脚本没有更多内存,无法完成发送电子邮件。我已经尝试更新错误处理程序函数中的内存限制,以便脚本可以完成错误,但这似乎不起作用。有没有办法强制PHP转储它的内存,以便有足够的发送错误邮件?或者也许是为了检测和取消设置最大的内存项?
编辑: 我应该澄清一下,我正在使用PHPMailer发送电子邮件。我正在考虑在内存耗尽错误的情况下使用邮件。
答案 0 :(得分:1)
根据定义,使用更多代码无法处理内存不足错误。任何额外的函数调用都需要为函数调用本身分配更多的内存,这是不可能的,因为你的内存不足。
最佳选择可能是一个cron作业,它会检查PHP错误日志并定期邮寄内存不足错误。
答案 1 :(得分:0)
看起来如果我检查耗尽错误并且只使用mail(),并且不创建任何变量,则在error_handler的最顶部,PHP将发送没有问题的电子邮件。
除了传递给错误处理程序的任何内容之外,我还必须确保预设任何我希望包含在电子邮件中的内容。