【问题标题】:Reindexing Magento though SQL通过 SQL 重新索引 Magento
【发布时间】:2012-11-29 02:56:17
【问题描述】:

有没有一种方法可以通过 SQL 语句在 magento 的后端调用重新索引?

我有一堆将产品添加到 magento 的脚本,我们需要在它之后重新索引,我们有一个运行这些脚本的预定作业,我想在它们完成后进行重新索引,这样它总是会在之后重新索引脚本无论花费多长时间都会完成(有时可能需要几分钟,有时是半小时,具体取决于需要更改、插入或删除哪些数据)

任务调度程序在 Microsoft SQL Server 上,magento 在 MySQL 服务器上(我们显然使用链接服务器)

【问题讨论】:

    标签: mysql sql tsql magento


    【解决方案1】:

    不,没有。

    在 Magento 中,“重新索引”意味着“运行 PHP 类列表并运行它们的 reindexAll 方法”。索引策略因索引器类型而异。大多数需要读取某种数据,进行程序计算,然后将值插入到平面表中。

    例如catalog/URL rewrite re-indexer就是类

    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;
        }
    }
    

    实际的索引是在refreshRewrites 方法中处理的,它创建了所需的Magento 重写。

    【讨论】:

    • 虽然您不能使用 SQL 执行此操作,但您仍然可以通过命令行执行此操作,即。你可以为它设置一个 cronjob 或类似的。要开始重新索引过程,您可以调用“php shell/indexer.php reindexall”。要查看索引的状态,您可以调用“php shell/indexer.php -- status”。
    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多