Php Magento索引状态永久挂起

Php Magento索引状态永久挂起,php,magento,zend-framework,indexing,magento-1.7,Php,Magento,Zend Framework,Indexing,Magento 1.7,我已经通过命令行创建了一个Magento实例,并添加了一些产品。紧接着,开始了每个索引的重新索引过程。目前的情况是,所有索引都具有挂起/处理状态。 这种情况给我带来了几个问题: 这个问题和安装过程有什么关系吗?(通过命令行) 这是个问题吗?因为我没有注意到任何副作用,所以我不太担心它。除非它花费了大量不必要的处理 我怎样才能修好它 我已经执行了php shell/indexer.php reindexall,但没有任何更改。如果执行phpshell/indexer.php--status所有索引

我已经通过命令行创建了一个Magento实例,并添加了一些产品。紧接着,开始了每个索引的重新索引过程。目前的情况是,所有索引都具有挂起/处理状态。 这种情况给我带来了几个问题:

  • 这个问题和安装过程有什么关系吗?(通过命令行)
  • 这是个问题吗?因为我没有注意到任何副作用,所以我不太担心它。除非它花费了大量不必要的处理
  • 我怎样才能修好它
  • 我已经执行了
    php shell/indexer.php reindexall
    ,但没有任何更改。如果执行
    phpshell/indexer.php--status
    所有索引都报告为“挂起”


    谢谢

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

    这将是解决问题的第一步


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

    首先:您需要弄清楚术语。(这可能有点令人困惑)。Magento索引有三种状态之一

    pending
    working
    require_reindex
    
    您可以在此处看到这些状态的常量

    const STATUS_RUNNING            = 'working';
    const STATUS_PENDING            = 'pending';
    const STATUS_REQUIRE_REINDEX    = 'require_reindex';
    
    这可能会令人困惑,因为Magento用于表示这些状态的图像使用了不同的术语

    也就是说,当索引的状态为
    pending
    时,Magento的UI将其表示为
    Ready
    。当索引的状态为
    工作时
    ,Magento的UI将其表示为
    处理
    ,等等

    更令人困惑的是,
    indexer.php
    命令没有使用这个术语,而是使用更接近实际状态的术语

    Pending
    Require Reindex
    Running
    
    因此,当您在上面提到挂起/处理时,不清楚您的系统处于什么状态

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

    var/locks/index_process_*
    
    当索引在
    运行状态下被“卡住”的时间超过预期时,通常是因为

  • 但索引器请求中途退出,无法清理其日志文件

  • var/locks/index\u process.*
    中文件的权限使得PHP无法写入文件


  • Re:#2——如果您习惯于使用命令行索引器,那么通常会创建Magento在web服务器/web管理员上运行时无法编辑或删除的文件。删除这些文件,然后重新编制索引通常是解决此问题的最佳方法

    谢谢你的提示!我不认为PHP限制了执行(因为存储几乎是空的),但我也会检查一下。我假设你不相信我的安装过程和问题之间有联系。对吗?当索引在var/lock文件夹中开始时,Magento会放置一些锁文件。这样做是为了使其他代码不会在锁定的进程上运行索引。但在您的情况下,当索引运行并放置锁文件时,因为执行未完成,所以锁文件不会被删除。太好了!我相信第二个提示(许可)会产生我的问题。