我遇到了一段代码,它通过一个从查询中获取结果的方法(表有130000条记录)并使用do while循环来执行此操作。
public function updateTestData()
{
$limit = 1000;
$offset = 0;
$processedCount = 1;
do {
$idList = $this->getActiveIds($limit, $offset);
if (array() === $idList) {
break;
}
$count = count($idList);
$this->getLogger()->log("Fetching $count ids from db..", Zend_Log::DEBUG);
foreach ($idList as $contactId) {
//doing few log things
$processedCount++;
}
$offset = $offset + $limit;
} while (true);
}
这是正确的方法吗?或者有没有更好的方法来编写这种方法避免无限循环? 非常感谢任何帮助。
答案 0 :(得分:1)
不需要do-while
,您只需使用while
方法作为条件,因为当数组为空时它将返回false条件。我会做以下事情:
$limit = 1000;
$offset = 0;
$processedCount = 1;
while ($idList = $this->getActiveIds($limit, $offset)) {
$processedCount += count($idList);
$offset += $limit;
}