php – 访问未定义的数组索引导致内存泄漏
我有一个脚本分析
XML数据并用信息填充相同的数组.
对于某些(巨大的)输入,脚本崩溃了. 有一个foreach循环,运行180次没有问题(memory_get_usage()在迭代180大约20 MB,每个循环增加约0.1 MB) 然后它发生在每个新循环中,内存使用量只增加一倍. 通过使用大量日志记录,我能够将问题跟踪到foreach中的以下行. $fu = $f [‘unit’] $f具有以下结构: array ( 'name' => 'Test','value' => '4','unit' => 'min-1',) 但是在一些(很多)情况下(但也在第180次迭代之前),关键单元不存在于数组中. 我能够通过替换以下行来消除问题: $fu = (isset($f['unit']) ? $f['unit'] : ''); 然后迭代运行直到完成(总共370次迭代). 这种现象有什么解释吗? PHP版本:带有Suhosin-Patch的PHP 5.3.3-1ubuntu9.10(旧…) 解决方法
您的问题可能来自PHP错误处理程序,而不是来自您的实际循环.
就像你说的那样,并不是每个“单元”键都存在,因此会出现错误(或异常取决于你的错误处理程序).这可能还包括堆栈跟踪和进一步的调试信息,具体取决于您安装的扩展名(xdebug?). 两者都会消耗内存. 在使用变量之前检查变量是一种很好的做法. Allways在开发系统中启用E_NOTICE错误以查看任何此类问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |