我在基于 ZF1 的应用程序中使用以下代码:
$select = $db->select()->from('table', array('id', 'int', 'float'))->limit(10000, (($i - 1) * 10000));
$data = $select->query();
while ($row = $data->fetch()) {
# ...
}
此操作在 foreach 循环中发生了大约 800 次。我输出了每遍的内存使用情况,可以看到它每遍增加了大约 5MB。我想这是因为 Zend 显然不会在传递完成后从查询中释放结果。一个简单的 unset 并没有解决问题。使用 fetchAll 也没有改善(或改变)这种情况。
有没有办法从 Zend_Db_Statement_PDO 中释放结果,从而释放它使用的内存?还是您怀疑其他原因?