0

SQLステートメントを介してmagentoのバックエンドで起動できる再インデックスを呼び出す方法はありますか?

製品をmagentoに追加するスクリプトがたくさんあり、その後再インデックスする必要があります。これらのスクリプトを実行するスケジュールされたジョブがあり、スクリプトが完了した後に常に再インデックスされるように、ジョブが完了した後に再インデックスを実行したいです所要時間に関係なく (どのデータを変更、挿入、または削除する必要があるかによって、数分かかることもあれば、30 分かかることもあります)

タスク スケジューラは Microsoft SQL Server 上にあり、magento は MySQL サーバー上にあります (リンク サーバーを使用しているようです)。

4

1 に答える 1

9

いいえ、ありません。

Magento では、「インデックスの再作成」とは、「PHP クラスのリストを実行し、それらのreindexAllメソッドを実行する」ことを意味します。インデックス作成戦略は、インデクサーの種類によって異なります。ほとんどの場合、何らかのデータを読み取り、プログラムによる計算を行ってから、フラット テーブルに値を挿入する必要があります。

たとえば、カタログ/URL 書き換えリインデクサーはクラスです。

app/code/core/Mage/Catalog/Model/Indexer/Url.php
(alias of catalog/indexer_url, PHP class of Mage_Catalog_Model_Indexer_Url)

そのreindxAllメソッドには

public function reindexAll()
{
    /** @var $resourceModel Mage_Catalog_Model_Resource_Url */
    $resourceModel = Mage::getResourceSingleton('catalog/url');
    $resourceModel->beginTransaction();
    try {
        Mage::getSingleton('catalog/url')->refreshRewrites();
        $resourceModel->commit();
    } catch (Exception $e) {
        $resourceModel->rollBack();
        throw $e;
    }
}

And the actual indexing is handled in the refreshRewrites method, which creates the needed Magento rewrites.

于 2012-11-29T03:16:14.383 に答える