内存不足和允许的内存大小*字节耗尽之间的差异

use*_*414 1 php mysql

我试图从MySQL表到PHP我的应用程序获得数百万行.

获取数据的步骤如下所示.

  1. 使用mysql_query()或mysqli_query()将查询发送到mySQL.

  2. 使用mysql_fetch_array()将结果设置为数组并循环每一行.或者使用mysqli_fetch_all()添加数组.

我把消息"内存不足"或"允许*字节耗尽的内存大小".

如果我改变'memory_limit',我或许可以解决它们.

但我想知道为什么会显示这些消息.

我已将'memory_limit'更改为128M-> 512M - > 1024M.

当我设置128M时,发送查询失败,允许的内存大小为*字节耗尽,我无法将结果添加到数组区域.

然后设置512M,查询成功完成但我无法将结果添加到允许*字节耗尽的内存大小的数组.

最后设置1024M,发送查询和设置结果以将结果添加到数组都已完成.但有时mysqli_fetch_all()是带内存不足的字段.

我无法理解的一件事是为什么内存不会经常发生?

我想知道的另一件事是如何从表中将整行超过一百万行转换为PHP内存转换.获取完整行后,我希望让我的用户通过浏览器操作访问它们,包括下载某些类型的文件,如csv.

Sud*_*dar 5

当所需的内存量超过php.ini文件中指定的内存限制时,您将获得"允许的内存大小*字节耗尽".

当服务器本身(或Apache或MySQL)内存不足时,您将获得"内存不足".