CakePHP建议迭代一个巨大的表并生成一个站点地图?

Ale*_*x J 6 php sitemap performance cakephp

我正在尝试使用CakePHP创建一个XML站点地图,该表目前有超过50,000条记录,每条记录等同于站点地图中的URI.现在我面临的问题是CakePHP在生成它时会让我失去内存,原因有两个:

  1. A find('all')正在构建整个50,000个URI的巨大关联数组.
  2. 因为我不想从控制器本身输出HTML,所以我将包含URI,优先级,更改频率等的关联数组转移到带有$this->set()调用的视图- 这也是巨大的,包含50,000个索引.

是否有可能在遵循MVC和CakePHP指南的同时做到这一点?

sib*_*iba 2

您确定要耗尽 50.000 条记录的内存吗?即使一行大小为 1K(相当大),您也必须处理 ~ 50 MB 的数据?我的 P1 有足够的 RAM 来处理这个问题。将 php.ini 中的 memory_limit 设置为高于默认值。(还要考虑调整 max_execution_time。)

另一方面,如果您认为数据集太大并且处理它过于占用资源,那么您不应该动态地提供该页面,它是完美的 DDoS 诱饵。(至少我会大量缓存它。)您可以安排一个 cron 作业,通过服务器端脚本每 X 小时重新生成一次页面,从而避免了一次性向视图提供所有数据的 MVC 惩罚,它可以在按顺序排列。