2017-03-03 61 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行,要么只是逐个迭代。 –