如何在Magento 1.13中运行部分重建索引?

时间:2014-01-24 04:31:22

标签: magento indexing magento-1.13

我希望能够将所有索引设置为“按计划更新”,然后在后台自动更新Magento says they should。问题是,这不会发生。没有自动重新索引的cron作业(请参阅this related question)。

所以,如果我必须创建自己的cron作业,我该如何以有效的方式完成这项工作?我不想运行“php shell / indexer.php reindexall”。这会完全重建索​​引表。当然,我可以在晚上这样做,但这意味着直到第二天才能在前端反映出任何变化。这不是一个可以接受的解决方案。如果我全天都运行完全重新索引,我最终遇到了我现在遇到的同样的问题 - 当人们在管理员工作时,由于重新索引而导致表锁定和缓慢。

Magento的新“部分重建索引”应该解决这个问题吗?

这是我对其工作原理的理解:

  1. 我编辑具有相关索引的实体(例如A产品)。
  2. 数据库触发器会将记录添加到相关的更改日志表中。
  3. 稍后某些进程会读取更改日志表并重新索引这些特定实体
  4. 具体示例

    1. 我更新了“catalog_product_entity_varchar”中的值。
    2. 数据库触发器“trg_catalog_product_entity_varchar_after_update”通过在“catalog_product_flat_cl”和“catalogsearch_fulltext_cl”中插入新版本来标记此产品已更改。
    3. 部分reindex流程读取这些更改日志表,并仅将提及的产品重新索引到“catalog_product_flat”和“catalogsearch_fulltext”。
    4. 如果是这种情况,重新索引过程将是最小的并且可以经常运行。甚至每分钟到索引的位置对于管理员用户来说几乎都是不可察觉的。 (我说每分钟,因为Magento告诉我们这是可能的)

        

      但是,在此版本中,平面目录会为您更新 - 每分钟或根据您的Magento cron作业。

      这神秘的部分重新指数在哪里?如何调用它而不是重新索引所有内容?

      是否有reindexPartial()?

      Underpants + ? = profit

2 个答案:

答案 0 :(得分:2)

enterprise_refresh_index cron作业似乎运行它。每次Magento cron运行时它都会运行。请参阅Enterprise_Index_Model_Observer :: refreshIndex()。

由于需要建立锁定文件,因此无法手动运行。如果您需要手动重新索引,最简单的方法就是运行cron.php文件。

我认为我只是遇到了一个项目特定的问题,而这个问题没有运行。

答案 1 :(得分:1)

部分重建索引是通过内置于Magento的cron作业运算符执行的。您不需要运行实际的indexer.php文件。相反,您必须根据文档设置Magento内置的Cron调度程序。

文档: http://www.magentocommerce.com/wiki/groups/227/setting_up_magento_in_cron

您只需执行 cron.php 文件,该文件将依次调用部分重建索引流程。

php5-cli -f /home/USERNAME/public_html/cron.php

工作原理:

  1. 对实体进行更改并标记为reindex。
  2. cronjob执行cron.php文件
  3. Magento检查它将运行哪些cron任务,并运行部分重建索引过程
  4. 索引过程将看到已更改的实体并使用新值更新索引表。