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

PHP中内存耗尽错误后增加或清除内存,php,memory,Php,Memory,我们目前有一个错误捕捉脚本为我们所有的PHP网站。此脚本使用set_error_handler和register_shutdown_函数的组合来捕获发生的所有错误,包括内存耗尽错误,然后向我们发送电子邮件,以便我们能够响应并修复错误 不幸的是,如果出现内存耗尽错误,脚本将没有更多内存,无法完成发送电子邮件。我尝试更新错误处理函数中的内存限制,以便脚本可以完成错误,但这似乎不起作用。有没有办法强制PHP转储内存,以便有足够的内存发送错误电子邮件?或者检测并取消设置最大的内存项 编辑: 我应该澄清一

我们目前有一个错误捕捉脚本为我们所有的PHP网站。此脚本使用set_error_handler和register_shutdown_函数的组合来捕获发生的所有错误,包括内存耗尽错误,然后向我们发送电子邮件,以便我们能够响应并修复错误

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

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

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


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

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


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

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


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

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


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

内存不足错误显然会传递给错误处理函数,该函数在错误发生之前已经分配。也许我可以在注册错误处理程序时分配或留出电子邮件发送者所需的内存。Cron显然是一个选项,但最好避免这样做,因为我很懒,而且不是所有我们部署的服务器都允许访问Cron。这是真的,因为调用错误处理程序的不是您的PHP代码,而是PHP内部,我想他们为错误处理程序做了一个例外。不过,错误处理程序本身没有更多的内存可分配。如果可以的话,这将是一个简单的解决内存限制的方法;但它之所以被称为限制是有原因的。内存不足错误被毫无疑问地传递给了错误处理函数,该函数在错误发生之前就已经分配好了。也许我可以在注册错误处理程序时分配或留出电子邮件发送者所需的内存。Cron显然是一个选项,但最好避免这样做,因为我很懒,而且不是所有我们部署的服务器都允许访问Cron。这是真的,因为调用错误处理程序的不是您的PHP代码,而是PHP内部,我想他们为错误处理程序做了一个例外。不过,错误处理程序本身没有更多的内存可分配。如果可以的话,这将是一个简单的解决内存限制的方法;但它被称为极限是有原因的。很有趣。如果在页面加载时创建一个内存块,并在错误处理程序中删除它并发送电子邮件,会发生什么情况?如果我分配了一个重要的内存块,然后在错误处理程序的最开始将其取消设置,那么我就有足够的内存发送电子邮件。有趣。如果在页面加载时创建一个内存块,并在错误处理程序中删除它并发送电子邮件,会发生什么情况?如果我分配了一个重要的内存块,然后在错误处理程序的最开始取消设置,那么我就有足够的内存发送电子邮件。