我们都知道这个错误:
Fatal error: Out of memory (allocated 32016932) (tried to allocate 25152 bytes)
Run Code Online (Sandbox Code Playgroud)
有办法处理这个错误吗?也许是执行的函数调用?这不是真正的堆栈溢出,它是系统强加的限制.人们会认为这里会有一点灵活性.我在本地缓存大量数据进行处理,但我有一个垃圾收集功能.我已经有功能设置来检查内存使用情况和可用内存是否超过一定限度,但我有时会错过.如果我可以在这个"致命"错误上调用我的函数......那么,在一个理想的世界中,程序应该能够恢复.
我的php.ini设置是memory_limit = 500M.
有什么想法吗?
非常感谢所有对此发表评论的人,但感谢@Wrikken提出的出色建议.
这是我最终做的事情:
declare(ticks=1);
register_tick_function('TickFunction');
function TickFunction() {
if(memory_get_usage()>220000000) // 220M
{
GlobalDataStore::CheckMemory(); // my garbage collection function
}
}
Run Code Online (Sandbox Code Playgroud)
我的php.ini内存限制设置远远高于我想要运行的内存限制,并且tick函数负责内存监控并根据需要释放内存.
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |