PHP内存耗尽错误后增加或清除内存


Increasing or Clearing memory after memory exhaustion error in PHP

我们目前有一个用于所有PHP站点的错误捕获脚本。此脚本使用set_error_handler&register_shutdown_function捕获所有发生的错误,包括内存耗尽错误,然后向我们发送一封电子邮件,以便我们可以响应并修复错误。

不幸的是,在内存耗尽错误的情况下,脚本没有更多的内存,无法完成电子邮件的发送。我已经尝试更新错误处理程序函数中的内存限制,以便脚本可以完成错误,但这似乎不起作用。有没有一种方法可以强制PHP转储内存,以便有足够的内存发送错误电子邮件?或者检测并取消设置最大的内存项?

编辑:我应该澄清一下,我正在使用PHPMailer发送电子邮件。我正在考虑在内存耗尽错误的情况下只使用邮件。

根据定义,内存不足的错误不能用更多的代码来处理。任何额外的函数调用都需要为函数调用本身分配更多的内存,这是不可能的,因为内存不足。

最好的选择可能是cron作业,它定期检查PHP错误日志和邮件内存不足的错误。

看起来,如果我检查耗尽错误,只使用mail(),并且不在error_handler的顶部创建任何变量,那么PHP将发送一封没有问题的电子邮件。

我还必须确保预设我希望包含在电子邮件中的任何内容,但传递给错误处理程序的内容除外。