大規模なMagento Webショップのほとんどでは、Magentoバックエンドインデックス管理を機能させるのは非常に困難です。私はこの問題を頻繁に経験しました。開発者がシェルスクリプトを常に実行するのは多忙です。通常、私はこの問題を永久に修正します。
shell / indexer.phpの新しいコピーを作成します> shell / myindexer.php
shell / myindexer.phpを154行目付近にカスタマイズします
} else if ($this->getArg('reindex') || $this->getArg('reindexall')) {
に
} else if ($this->getArg('reindex') || $this->getArg('reindexall') || $this->getArg('reindexallrequired') ) {
そして、このチェックを166行目に追加します
//reindex only if required
if( $this->getArg('reindexallrequired') && $process->getStatus() == Mage_Index_Model_Process::STATUS_PENDING )
continue;
前
$startTime = microtime(true);
$process->reindexEverything();
$resultTime = microtime(true) - $startTime;
Mage::dispatchEvent($process->getIndexerCode() . '_shell_reindex_after');
そして、新しいシェルスクリプトをcpanel cronに追加して、5分ごとに実行します
/home/public_html/shell/indexer.php --reindexallrequired >/dev/null
上記のシェルスクリプトは5分ごとに実行され、再インデックス付けが必要なプロセスのみを再インデックス付けするため、サーバーCPUに大きな負荷がかかるリスクが軽減され、再インデックス付けのプロセス全体が非常に高速になります。再インデックス付けが必要なプロセスがない場合、単に再インデックス付けプロセスは実行されません。また、インデックス管理ページで再保存モードを「保存時に更新」に設定することを忘れないでください。わからない場合は、[送信]ボタンの横にある[アクション]> [インデックスモードの変更]でこのオプションを取得できます。