我注意到自从我升级到PHP7后,一些SQL语句不再起作用,而是会耗尽内存。
我有以下代码:
$query = Yii::$app->db->createCommand('select * from tbl_title')->query();
while ($row = $reader->read()) {
var_dump($row);
exit();
}
而 Yii2 的数据库抽象只是 PDO 上的一个非常薄的层,并没有做任何额外的事情。query()
除了为了分析记录并添加一行到一个日志文件(Yii2 的)之外,没有做任何额外的工作。而 reader->read()
只是调用了 PDO 流的 fetch()
函数。
但当我尝试报告我的表的大小时,即尝试分配385 MB的进程内存时,它会耗尽内存:
已用尽 134217728 字节的内存限制(尝试分配 385883840 字节)
如果使用结果集完全适合 PHP 进程128 MB限制的查询,则可以解决这个问题。
那么,PHP7 是否发生了改变,我能否将其改回去?