gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-28 23:31:52 24 4
gpt4 key购买 nike

我曾经使用 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 驱动程序无论如何都必须将结果集放入内存中。我想得到一个理解问题是关于性能的人的意见。请不要评论代码,我只是将其作为帖子的示例。

谢谢

最佳答案

你在混合问题。

  • 可用性,使用数组让你的代码更流畅
  • 和未经优化的算法,当没有经验的程序员倾向于将所有数据加载到脚本中,而不是让数据库进行所有计算或部分获取数据时。

所以。框架不会获取所有数据。他们只获取程序员写的内容。
因此,优秀的程序员不会将大量数据提取到数组中。在这几个真正需要的情况下,人们会使用旧的逐行获取(并且每个框架都为此提供了一种方法)。在所有其他情况下,应使用平滑的数组中提取。

还请注意,框架永远不会在数据库循环内执行诸如回显数据之类的事情。
每个好的框架都会使用模板来输出东西,在这种情况下,数组非常方便。

关于php - 在 PHP 中,当我们使用 mysql_query 时,内存中会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com