在PHP中,当我们使用mysql_query时,内存中会发生什么

前端之家收集整理的这篇文章主要介绍了在PHP中,当我们使用mysql_query时,内存中会发生什么前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我曾经使用 mysql_query获取大量的数据,然后逐个迭代结果来处理数据.例如:
$MysqL_result = MysqL_query("select * from user");
while($row = MysqL_fetch_array($MysqL_result)){
    echo $row['email'] . "\n";
}

最近我看了几个框架,并意识到他们将所有数据读取到内存中的数组并返回数组.

$large_array = $db->fetchAll("select * from user");
foreach($large_array as $user){
    echo $user['email'] . "\n";
}

我想知道每种方法的利弊.在我看来,加载内存中的所有内容都是灾难的秘诀,如果你有一个很长的项目列表.但是再一次,同事告诉我,MysqL驱动程序不得不将结果集放在内存中.我想得到一个明白问题是关于表演的人的意见.请不要对代码发表评论,我只是作为这个帖子的例子.

谢谢

的确,MysqL库“通常”会获取客户端内存中的所有数据.它通常使用 mysql_store_result()这样做.您可以使用LIMIT关键字分解上面的过大查询,但是由于可能会在其间进行更改,因此数据不一致的风险.你可以关心这个使用锁.

另一种方法可能是使用mysql_use_result(),它在服务器端使用更多的资源,并且需要尽快完成提取作业.

猜你在找的PHP相关文章