我正在尝试使用 CakePHP 从一个目前有超过 50,000 条记录的表中创建一个 XML 站点地图,每条记录相当于站点地图中的一个 URI。现在我面临的问题是 CakePHP 在生成它时耗尽了我的内存,原因有两个:
find('all')
正在构建一个包含整组 50,000 个 URI 的巨大关联数组。- 因为我不想从 Controller 本身输出 HTML,所以我将包含 URI、优先级、更改频率等的关联数组传输到带有
$this->set()< 的 View
调用 -- 这又是一个巨大的调用,包含 50,000 个索引。
是否有可能在遵循 MVC 和 CakePHP 准则的同时执行此操作?
最佳答案
我知道这个问题很老,但对于非常大的查询,我认为仍然没有好的解决方案。
要遍历巨大的结果集,您可以使用 DboSource 方法。
首先获取DBO
$dbo = $this->Model->getDataSource();
构建查询
$sql = $dbo->buildStatement($options);
然后执行语句并遍历结果
if ($dbo->execute($sql))
{
while ($dbo->hasResult() && $row = $dbo->fetchResult()) {
// $row is an array with same structure like find('first')
}
}
关于php - CakePHP 推荐迭代一个巨大的表并生成站点地图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2369210/