我试图从一个MySQL表中获得超过数百万行的PHP应用程序。
获取数据的步骤如下所示。
我将消息“从内存中取出”或“允许内存大小为*字节耗尽”。
如果我更改“memory_limit”,我可能会解决它们。
但我想知道为什么这些信息会被展示出来。
我把“memory_limit”改成了128米->51米->1024M。
设置128 m时,发送查询失败,允许内存大小为*字节,无法将结果添加到数组区域。
然后设置512 m,查询已成功完成,但我无法将结果添加到允许内存大小为*字节的数组中。
最后,设置1024M,发送查询和将结果添加到数组中都完成了.but,有时mysqli_fetch_all()是没有内存的字段。
我无法理解的一件事是,为什么记忆不足的事情不会经常发生?
我想知道的另一件事是如何从一个表中获得超过一百万行的全部行到PHP中,减少内存的转换。在获得整行之后,我希望让我的用户通过浏览器操作访问它们,包括下载一些类型的文件,比如csv。
发布于 2012-11-22 09:52:12
当所需的内存量超过php.ini文件中指定的内存限制时,您将得到“允许内存大小*字节耗尽”。
当服务器本身(或Apache或MySQL)耗尽内存时,您将“内存不足”。
发布于 2012-11-22 09:22:53
检索大量行的最佳选择是在查询中使用limit和offset并循环它们。
这将防止您面临的内存问题。
https://stackoverflow.com/questions/13509342
复制相似问题