2017-03-03 9 views
0

メモリ制限のためにすべての300k行を同時にフェッチできません。 PDOのwhile/fetchを使用して、あらかじめ定義されたチャンクを循環させる方法はありますか?PDOが固定数の行を取り出します

Nが予め定められた間隔で
while($result = $statement->fetch(PDO::FETCH_ASSOC, N)) 

:よう 何か。

+0

クエリで制限とオフセットを使用する –

答えて

3

これは必要ありません。あなたのメモリの問題がunbuffered query

によって引き起こされることはそう、ちょうどあなたのクエリ

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

前にこの魔法の行を追加し、もうメモリを搭載した1つの問題を持っていない - あなたのコード

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

ocupyます1行分のRAMを使用する

+0

このように、サイクルごとに1つの結果をフェッチしています...すべての結果をフェッチする必要があります配列内にあります。 – Jumpa

+0

それは変です。部分配列の使用は何ですか?私はそれを得ることができません。 1つの配列に300k行をすべて必要とするか、1つずつ繰り返します。 –

関連する問題