2017-03-03 63 views
0

由於內存限制,我無法同時獲取所有300k行。 任何使用while/fetch PDO在預定義塊中循環的方法? 是這樣的:PDO獲取固定行數

while($result = $statement->fetch(PDO::FETCH_ASSOC, N)) 

其中N是一個預定義的時間間隔。

+0

在您的查詢中使用限制和偏移量 –

回答

3

你不需要那個。你的內存問題是由unbuffered query

造成的所以,只要你的查詢

$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, FALSE); 

之前添加此魔線,並沒有帶記憶功能的單一的問題了 - 你的代碼

while($result = $statement->fetch(PDO::FETCH_ASSOC)) 

會按觀測不超過單排內存

+0

這樣我每循環取一個結果...我需要獲取所有結果在一個數組中。 – Jumpa

+0

這很奇怪。什麼是部分數組的使用?我無法得到它。要麼你需要單個數組中的所有300k行,要麼只是逐個迭代。 –