Magento指数状态永远悬而未决

时间:2013-12-31 17:59:07

标签: php magento zend-framework indexing magento-1.7

我通过命令行创建了一个Magento实例并添加了一些产品。之后,为每个索引启动了重新索引进程。目前的情况是所有索引都具有状态待处理/处理。 这种情况给我带来了一些问题:

  1. 此问题与安装过程之间是否存在任何关系? (通过命令行)
  2. 这是一个问题吗?由于我没有注意到任何副作用,我不是很关心它。除非它花费大量不必要的处理。
  3. 我该如何解决?
  4. 我已经执行了php shell/indexer.php reindexall但没有改变。并且,如果我执行php shell/indexer.php --status所有索引报告为'待定'。

    由于

2 个答案:

答案 0 :(得分:23)

第一:你想要直截了当地说出你的术语。 (这可能有点令人困惑)。 Magento指数具有三种状态之一。

pending
working
require_reindex

您可以在此处查看这些状态的常量

const STATUS_RUNNING            = 'working';
const STATUS_PENDING            = 'pending';
const STATUS_REQUIRE_REINDEX    = 'require_reindex';

这可能令人困惑,因为Magento用来表示这些状态的图像使用不同的术语。

enter image description here

也就是说,当索引的状态为pending时,Magento的UI将其表示为Ready。当索引的状态为working时,Magento的UI将其表示为Processing等。

进一步令人困惑的是,indexer.php命令使用此术语 - 而是使用更接近实际状态的术语

Pending
Require Reindex
Running

因此,当您说上面的待处理/处理时,不清楚您的系统处于什么状态。

第二:PHP没有内置的排队系统 - 这意味着每个索引都在一个单独的PHP进程中运行。这也意味着Magento和PHP没有(简单,可靠)的方法来确定索引进程是否正在运行。为了实现STATUS_RUNNING / Working / Running状态,Magento使用锁定文件来跟踪索引的状态。这些锁文件位于

var/locks/index_process_*

如果索引在STATUS_RUNNING / Working / Running中“卡住”的时间超过了您的预期,通常是因为

  1. 索引器请求退出一半但未能清理其日志文件

  2. var/locks/index_process_*中文件的权限是PHP无法写入文件的

  3. Re:#2 - 如果您习惯使用命令行索引器,您通常会最终创建Magento从web-server / web-admin运行时无法创建的文件编辑或删除。删除这些文件然后重新编制索引通常是解决此问题的最佳方法。

答案 1 :(得分:1)

在var / locks文件夹中删除已创建的.lock文件。

这将是解决问题的第一步。

同时检查php执行时间和内存限制是否不是索引脚本未完成执行的原因。