我有一个脚本,它分析 XML 数据并用信息填充相同的数组。
对于一些(巨大的)输入,脚本崩溃了。
有一个 foreach 循环运行大约 180 次没有问题(迭代 180 中的 memory_get_usage() 大约 20 MB,每个循环增加大约 0.1 MB)
然后,每个新循环都会发生内存使用量翻倍的情况。
通过使用大量日志记录,我能够在 foreach 中将问题跟踪到以下行。
$fu = $f['单位']
$f
具有以下结构:
array (
'name' => 'Test',
'value' => '4',
'unit' => 'min-1',
)
但在某些(许多)情况下(但也是在第 180 次迭代之前),unit
数组中不存在密钥。
我能够通过将行替换为:
$fu = (isset($f['unit']) ? $f['unit'] : '');
然后迭代运行直到完成(总共 370 次迭代)。
这些现象有什么解释吗?
PHP 版本:带有 Suhosin-Patch 的 PHP 5.3.3-1ubuntu9.10(旧...)