在PHP中出现内存耗尽错误后增加或清除内存

时间:2012-04-02 09:07:12

标签: php memory

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

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

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

2 个答案:

答案 0 :(得分:1)

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

最佳选择可能是一个cron作业,它会检查PHP错误日志并定期邮寄内存不足错误。

答案 1 :(得分:0)

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

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