我正在尝试拆分我的 sitemap.xml,因为 Google 网站管理员工具只允许 sitemap.xml 少于 50k url。如果文件包含超过 50k 的 URL,我将以下代码放入: app\code\local\Mage\Sitemap\Model\Sitemap.php以拆分 sitemap.xml。
public function check_counter(&$io) {
static $counter;
$counter++;
$tRec = 50000; // total record per file
if ( ($counter % $tRec) == 0 ){
$io->streamWrite('</urlset>');
$io->streamClose();
$filename = preg_replace('/\.xml/', '-'.
round($counter/$tRec).
'.xml', $this->getSitemapFilename());
$io->streamOpen($filename);
$io->streamWrite('<?xml version="1.0" encoding="UTF-8"?>'."\n");
$io->streamWrite('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">');
}
如果我从 Magento 管理面板手动生成站点地图,一切正常。它将创建 2 个文件:Sitemap.xml(50,000 个网址)和Sitemap-1.xml(12,312 个网址)
我已经设置了 cron 作业以每晚生成站点地图。问题是 cron 作业似乎不遵循代码。它生成 2 个文件:sitemap-1.xml(我不知道有多少,但肯定超过 50,000 个 url,因为 google 给我一个错误,说我在这个文件中有太多 url)和sitemap.xml(几百个 url .)
代码有什么问题?或者我的 cron 工作有什么问题?
编辑:
我放
$this->check_counter($io);
每次之后
$io->streamWrite($xml);
在
public function generateXml()