php遭遇内存不足问题

服务器上有一个自动生成数据的程序,是从另一个数据库中获取生成的。

结果最近经常用户反应数据生成不完整,检查log发现是内存用满了,默认是128MB,于是调整为256MB,结果还是有问题,于是调整为1024MB,还是有问题。

这样就必须回头检查代码了,发现之前的代码是如此写的:

$sql2= "...";
$sth2 = $db->query($sql2);
$rows2 = $sth2->fetchAll();
foreach($rows as $k=>$v)
{
...
}

这样以来,若数据库中一次性取出的数据很大,就用使用太多的内存,于是修改代码,调整为:

$sql2= "...";
$sth2 = $db->query($sql2);
while($v=$sth2->fetch())
{
...
}

这样就应该能解决问题了。

总结:fetchAll速度会有所提升,但在大数据量下耗费内存直线上升。因此在合适的场景下可以选择用fetch迭代。


已发布

分类

,

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注