加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 14:02:20 所属栏目:PHP教程 来源:网络整理
导读:我曾经使用 mysql_query获取大量的数据,然后逐个迭代结果来处理数据.例如: $mysql_result = mysql_query("select * from user");while($row = mysql_fetch_array($mysql_result)){ echo $row['email'] . "n";} 最近我看了几个框架,并意识到他们将所有数据
我曾经使用 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(),它在服务器端使用更多的资源,并且需要尽快完成提取作业.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读