Php Magento索引状态永久挂起
我已经通过命令行创建了一个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所有索引
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会放置一些锁文件。这样做是为了使其他代码不会在锁定的进程上运行索引。但在您的情况下,当索引运行并放置锁文件时,因为执行未完成,所以锁文件不会被删除。太好了!我相信第二个提示(许可)会产生我的问题。