Начинается ли переиндексация расписания magento 1.9?


Наш клиент использует инструмент для импорта продуктов. Этот инструмент не запускает переиндексацию при сохранении.

Когда я смотрю на режимы индексирования индексаторов Magento 1.9, я вижу в реальном времени и вручную.

Есть ли способ запланировать переиндексацию из Magento или мне следует использовать расписание ОС/cron?

Author: Prince Patel, 2018-01-05

2 answers

Поскольку ваши вопросы немного запутаны, позвольте мне сначала разделить их:

Начинается ли переиндексация расписания magento 1.9?

Да - и нет. По умолчанию Magento 1.9 (более ранние версии, скорее всего, также) будет выполнять повторную индексацию цен catalog/observer::reindexProductPrices с выражением cron 0 2 * * * (=2 часа ночи). Вы можете рассмотреть возможность установки Aoe_Scheduler ( ссылка ), чтобы получить лучшее представление о том, что выполняется как запланированная задача.

Является есть способ запланировать переиндексацию из Magento или мне следует использовать расписание ОС/cron?

Несмотря на то, что выполнение таких задач, как повторная индексация в отдельном cron, широко поощряется, я не очень доволен этим подходом. В конце есть причина, по которой у Magento есть один скрипт cron (хорошо, два, cron.php и cron.sh, но в конце это приводит к одной и той же точке) для выполнения нескольких задач. Суть в том, что, когда вы более или менее принудительно выполняете повторную индексацию с помощью отдельного задания cron на вашем сервер, как вы можете убедиться, что, например, процесс импорта уже завершен и/или в настоящее время нет другой запланированной задачи, выполняемой собственным cron Magento, которую вы обычно не хотите конфликтовать друг с другом? То же самое в основном относится и к "внешним" сценариям импорта. Это означает, что в конечном счете я бы предложил всем сохранить даже эти процессы, управляемые Magento, например, с помощью пользовательского расширения.

Один простой подход для автоматического выполнения переиндексации в Magento на основе запланированной задачи это:

app/etc/modules/Vendorname_Indexer.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Vendorname_Indexer>
            <active>true</active>
            <codePool>local</codePool>
        </Vendorname_Indexer>
    </modules>
</config>

app/code/local/Vendorname/Indexer/etc/config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Vendorname_Indexer>
            <version>1.0.0</version>
        </Vendorname_Indexer>
    </modules>
    <global>
        <models>
            <vendorname_indexer>
                <class>Vendorname_Indexer_Model</class>
            </vendorname_indexer>
        </models>
    </global>
    <crontab>
        <jobs>
            <vendorname_indexer>
                <schedule>
                    <cron_expr>0 0 * * *</cron_expr>
                </schedule>
                <run>
                    <model>vendorname_indexer/cron::run</model>
                </run>
            </vendorname_indexer>
        </jobs>
    </crontab>
</config>

app/code/local/Vendorname/Indexer/Model/Cron.php

<?php
class Vendorname_Indexer_Model_Cron {

    public function run() {

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

    }

}

Все это в основном не делает ничего, кроме регистрации новой запланированной задачи (см. crontab-узел в config.xml ) и выполнение всех процессов индексирования (Cron.php). (Обратите внимание, что это приведет к повторной индексации всего (по умолчанию это будет Product Attributes, Product Prices, Catalog URL Rewrites, Category Products, Catalog Search Index, Stock Status, Tag Aggregation Data) таким образом, вы можете выбрать только определенные процессы индексирования в Cron.php на основе кода индексатора).

В этом случае вы также можете легко изменить функцию run(), чтобы сначала выполнить задачу импорта, а на втором этапе выполнить процесс индексирования (то, как вы это сделаете, очевидно, будет зависеть от вашего сценария импорта).

 2
Author: Christoph Farnleitner, 2018-01-06 10:54:53

Используйте cron для планирования переиндексации, как показано ниже

0 6 * * * php -f /shell/indexer.php reindexall

Установите определенное время для выполнения cron.

Спасибо

 1
Author: Mukesh Prajapati, 2018-01-05 14:42:32