在Magento的CE版本中,有一种方法可以通过导航到管理界面的“索引管理”部分并在其中重建然后通过Web服务器来刷新特定索引。
在更高版本的EE中,删除了此功能,而采用了增量索引。从原则上讲,这是一个好主意,它允许系统完全管理索引的状态。
不幸的是,我们遇到了一个问题,我们需要安排在Magento之外对价格,库存和类别产品指数进行全面重建。尽管我毫不怀疑这归因于系统的另一个组件异常运行,并且没有适当地更新索引更改日志,但是我们处于无法触发完整索引重建的情况。
为了实现刷新,我们通过将索引标记为无效并重置其变更日志版本来操纵EE的物化视图组件。
<?php
require_once __DIR__ . "/app/Mage.php";
Mage::app();
$tables = [
'catalog_category_product_cat',
'catalog_category_product_index',
'cataloginventory_stock_status',
'catalog_product_index_price'
];
foreach ($tables as $table) {
/* @var $client Enterprise_Mview_Model_Client */
$client = Mage::getModel('enterprise_mview/client');
$client->init($table);
$metadata = $client->getMetadata();
$metadata->setInvalidStatus();
$metadata->setVersionId('');
$metadata->save();
}