Magento Indexers – Programmatically Using Indexers

In some custom modules, you may need to change the index mode from manual to auto or vice versa or you may need to run one of the indexers.

$pCollection
    = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($pCollection as $process) {
    //$process->setMode(Mage_Index_Model_Process::MODE_MANUAL)->save();
    $process->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)->save();
}

$pCollection
    = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($pCollection as $process) {
    $process->reindexEverything();
}

Indexes can be loaded using either the process ID or the process code using the functions:

by ID:

$process = Mage::getSingleton('index/indexer')->getProcessById();

by CODE:

$process = Mage::getSingleton('index/indexer')->getProcessByCode(<process_code>);

 

The process code and ID can be found by checking the table index_process. The Magento provided indexes normally have the following ID and code.

Process Name ID Code
Product Attributes 1 catalog_product_attribute
Product Prices 2 catalog_product_price
Catalog URL Rewrites 3 catalog_url
Product Flat Data 4 catalog_product_flat
Category Flat Data 5 catalog_category_flat
Category Products 6 catalog_category_product
Catalog Search Index 7 catalogsearch_stock
Stock Status 8 cataloginventory_stock
Tag Aggregation Data 9 tag_summary

 

Leave a Reply

Your email address will not be published. Required fields are marked *