【发布时间】:2014-03-10 21:37:39
【问题描述】:
我正在运行一个对目录进行大量更新的进程(更改名称、价格、库存、项目的一些自定义属性)。在脚本结束时,我将其设置为使用以下代码重新索引:
$processCol = Mage::getModel('index/process')->getCollection();
foreach($processCol as $process) {
$process->reindexEverything();
}
它运行没有错误,并且可以放置一个日志来查看索引器代码,因为它们被编入索引,但是它比命令行 reindex.php 文件运行得快得多。此外,在我从命令行运行重新索引之前,仍然会显示我设置为不显示在数据中的产品。脚本中的重新索引似乎在做某事,但没有在前端更新我的产品。
【问题讨论】:
-
如果您使用的是最新版本的 Magento,则索引仅在已更改的数据上运行。您的脚本可能没有标记这些项目,而索引只是跳过了这些记录(这可能是它运行得更快的原因,因为它没有做太多)
-
是的,它是一个新版本。但是,我看不到 indexer.php 文件中的内容,该文件对所有内容进行索引,而不是对更改的内容进行索引。我可以运行我的脚本并且前端的项目没有改变,但是我运行 CLI 脚本,它似乎接受了更改。
-
对于遇到相同问题的任何人,我将 CLI 重新索引脚本中的许多逻辑提取到一个类中,现在将像 CLI 一样从代码中重新索引。复制是这里的要点link