PHP查詢MySQL大量資料的記憶體

2021-06-07 07:20:31 字數 569 閱讀 5962

這篇文章主要是從原理, 手冊和原始碼分析在php中查詢mysql返回大量結果時, 記憶體占用的問題, 同時對使用mysql c api也有涉及。

昨天, 有同事在php討論群裡提到, 他做的乙個專案由於mysql查詢返回的結果太多(達10萬條), 從而導致php記憶體不夠用。 所以, 他問, 在執行下面的**遍歷返回的mysql結果之前, 資料是否已經在記憶體中了? -

while ($row = mysql_fetch_assoc($result)) else {

mysql_result=mysql_store_result(&mysql->conn);

mysql_use_result()和mysql_store_result()是mysql的c api函式, 這兩個c api函式的區別就是後者把結果集從mysql server端全部讀取到了client端, 前者只是讀取了結果集的元資訊。

回到php, 使用mysql_unbuffered_query(), 可以避免記憶體的立即占用。 如果在遍歷的過程不對結果進行「php快取」(如放到某陣列中), 則整個執行過程雖然操作了十萬條或者百萬條或者更多的資料, 但php占用的記憶體始終是非常小的。

PHP查詢MySQL大量資料的記憶體

這篇文章主要是從原理,手冊和原始碼分析在php中查詢mysql返回大量結果時,記憶體占用的問題,同時對使用mysql c api也有涉及。昨天,有同事在php討論群裡提到,他做的乙個專案由於mysql查詢返回的結果太多 達10萬條 從而導致php記憶體不夠用。所以,他問,在執行下面的 遍歷返回的my...

PHP查詢MySQL大量資料的記憶體

這篇文章主要是從原理,手冊和原始碼分析在php中查詢mysql返回大量結果時,記憶體占用的問題,同時對使用mysql c api也有涉及。昨天,有同事在php討論群裡提到,他做的乙個專案由於mysql查詢返回的結果太多 達10萬條 從而導致php記憶體不夠用。所以,他問,在執行下面的 遍歷返回的my...

PHP查詢MySQL大量資料的記憶體占用分析

from 這篇文章主要是從原理,手冊和原始碼分析在php中查詢mysql返回大量結果時,記憶體占用的問題,同時對使用mysql c api也有涉及.昨天,有同事在php討論群裡提到,他做的乙個專案由於mysql查詢返回的結果太多 達10萬條 從而導致php記憶體不夠用.所以,他問,在執行下面的 遍歷...