2013-02-12 13 views

答えて

39

以下は、各インデックスを再インデックスします。

for ($i = 1; $i <= 9; $i++) { 
    $process = Mage::getModel('index/process')->load($i); 
    $process->reindexAll(); 
} 

forループのidをハードコードするのではなく、Magentoコレクションモデルを使用して各インデックスを読み込むこともできます。

/* @var $indexCollection Mage_Index_Model_Resource_Process_Collection */ 
$indexCollection = Mage::getModel('index/process')->getCollection(); 
foreach ($indexCollection as $index) { 
    /* @var $index Mage_Index_Model_Process */ 
    $index->reindexAll(); 
} 

しかし、あなたはインデックスを再作成したい場合は、単に価格はidが2

$process = Mage::getModel('index/process')->load(2); 
$process->reindexAll(); 

で次のようにしても、機能getProcessByCodeを呼び出すことができます。

$process = Mage::getModel('index/indexer')->getProcessByCode('catalog_product_price'); 
$process->reindexAll(); 
+0

ありがとうDavid – dido

+0

うれしい私はあなたの答えを見つけることができます。 – dmanners

+0

私はループの中で '9'が好きではありません。これに代わるものはありますか? – MatheusJardimB

2

次のSSHコマンドにあなたを使用することによりすべての索引を再索引付けできます。

php shell/indexer.php reindexall 

しかし、あなたは唯一のcatalog_product_priceのインデックスを再作成したい場合、あなたは、コードの下に使用することができます。あなたはSSH経由インデックスを再作成するために関連するすべてのコマンドは、このコマンドを使用することができます

php shell/indexer.php --reindex catalog_product_price 
+2

これは彼が何をしているのかを説明するだけです。 OPはそれをプログラム的に行う方法を知りたい。 –

1
php -f indexer.php help 

$indexer = Mage::getModel('index/indexer')->getProcessByCode('catalog_product_price') 
$indexer->reindexEverything(); 

またはこれを行う:あなたの場合は

for ($i = 0; $i <= 8; $i++) { 
     $process = Mage::getModel('index/process')->load($i); 
     $process->reindexAll(); 
    } 

For More Info

0

をコードする方法のようなあなたは、あなたがコードの下を通過する必要があれば

php indexer.php -- reindex [process_code] 

    e.g: php indexer.php --reindex catalog_product_price 

者は、SSH経由でありますフラットテーブルを持っていて、なぜ(私が今日したように)プログラムで更新された価格がfrに表示されていないのかどんなにあなたがインデックスを再作成回数ONT終わり、おそらくあなたは価格のインデックスを再作成AFTER平らな製品のインデックスを再作成する必要があります。

php shell/indexer.php reindexall 

ノートの順序を:

php shell/indexer.php -reindex catalog_product_price 
php shell/indexer.php -reindex catalog_product_flat 

あなたは、通常に行う場合インデックスの再作成:

Category Flat Data index was rebuilt successfully in 00:00:00 
Product Flat Data index was rebuilt successfully in 00:00:00 
Stock Status index was rebuilt successfully in 00:00:00 
Catalog product price index was rebuilt successfully in 00:00:00 
... 

を製品フラットが価格前にインデックス化され、価格更新はフラットテーブル(IEで更新されませんでしたがFORE catalog_product_flat_2)。フラットテーブルを調べ、プログラムで更新された価格が設定されていることを確認します。

+0

私はまた、n98の順序が正しいことに気付きました。 –

関連する問題