我試圖從MySQL表中獲取數以百萬計的行到PHP我的應用程序。內存不足和允許內存大小*字節耗盡之間的差異
獲取數據的步驟如下所示。
發送查詢到MySQL用的mysql_query()或mysqli_query()..
集結果通過使用mysql_fetch_array(循環每行陣列)。或者通過使用mysqli_fetch_all添加陣列()。
我把消息'內存不足'或'允許內存大小*字節耗盡'。
如果我更改'memory_limit',我可能可以解決它們。
但我想知道爲什麼顯示這些消息。
我已經更改'memory_limit',如128M-> 512M - > 1024M。
當我設置128M,發送查詢失敗,允許內存大小*字節用盡,我不能將結果添加到數組區域。
然後設置512M,查詢成功完成,但我無法將結果添加到允許內存大小爲*字節的內存耗盡。
最後設置爲1024M,發送查詢和設置結果都將結果添加到數組已完成。但有時mysqli_fetch_all()是內存不足的字段。
我不明白的一件事是爲什麼內存不會不斷髮生?
我還想知道的另一件事是如何從一張表中獲取整個行超過一百萬到更少的內存轉向。獲得整行後,我希望讓我的用戶通過瀏覽器操作訪問它們,包括下載一些類似csv的文件。
當您更改內存限制時 - 是否重新啓動Apache? – Chris
是的,我做過了。我再次訪問Apache。 – user1345414