最近我遇到了一些PHP内存限制的问题:
内存不足(已分配22544384)(尝试分配232字节)
这些问题很让人头疼,因为我没有太多关于��致问题的信息。
添加一个关闭函数已经有所帮助。
register_shutdown_function('shutdown');
然后,使用error_get_last()函数,我可以获取有关最后一个错误的信息,例如“Out of memory”致命错误的行号和PHP文件名。
这很好,但我的PHP程序是面向对象的。堆栈中的错误并不能告诉我关于控制结构或错误发生时的执行堆栈的太多信息。我尝试了debug_backtrace(),但它只显示了关闭期间的堆栈,而不是错误发生时的堆栈。
我知道我可以使用ini_set或修改php.ini来增加内存限制,但这并不能让我更接近实际找出是什么消耗了如此多的内存或者我的执行流程在错误期间是什么样子的。
是否有人有一种良好的方法来调试高级面向对象的PHP程序中的内存错误呢?