php - CakePHP 推荐迭代一个巨大的表并生成站点地图?

标签 php performance cakephp sitemap

我正在尝试使用 CakePHP 从一个目前有超过 50,000 条记录的表中创建一个 XML 站点地图,每条记录相当于站点地图中的一个 URI。现在我面临的问题是 CakePHP 在生成它时耗尽了我的内存,原因有两个:

  1. find('all') 正在构建一个包含整组 50,000 个 URI 的巨大关联数组。
  2. 因为我不想从 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/

相关文章:

ios - 在进行选择器调用之前显式检查nil是否有任何好处?

php - 在 cakephp 中加入查询

php - octobercms 任务调度不工作

php - 公共(public)、私有(private)或 protected 属性(property)?

php - Codeigniter Undefined Property,或者我的 Controller 如何停止担心并学会喜欢这个模型

python隐式二进制搜索

php - 在后台运行 PHP 脚本(不使用 Cron)

android - 适用于 Android 的预编译 FFmpeg 与使用 Android NDK 构建 FFmpeg

php - 用额外的字段保存 HABTM?

php - Cakephp 更新或添加新记录