如何调试php“内存不足”问题?
2022-08-30 13:42:46
我最近遇到了一些PHP内存限制的问题:
内存不足(分配22544384)(尝试分配 232 字节)
这些都是调试的麻烦,因为我没有留下很多关于导致问题的原因的信息。
添加关机功能很有帮助
register_shutdown_function('shutdown');
然后,使用error_get_last();我可以获取有关最后一个错误的信息,在这种情况下,“内存不足”致命错误,例如行号和php文件名。
这很好,但是我的php程序是高度面向对象的。堆栈深处的错误并不能告诉我有关错误时刻的控制结构或执行堆栈的太多信息。我尝试过debug_backtrace(),但这只是在关闭期间向我显示堆栈,而不是错误时的堆栈。
我知道我可以使用ini_set或修改php.ini来提高内存限制,但这并不能让我更接近于真正弄清楚什么消耗了这么多内存,或者我的执行流在错误期间是什么样子的。
有人有一个很好的方法来调试高级面向对象PHP程序中的内存错误吗?