Как мне зарегистрировать cronjob модуля


Краткий обзор

Прежде всего, я хочу выразить, что стороннее расширение для перечисления кробджобов - это не то, что я ищу, я опущу свое мнение о том, как Magento обрабатывает кробджобы.

Моя проблема заключается в том, что когда я запрашиваю базу данных SELECT * FROM cron_schedule; мои модули cron там не перечислены, поэтому я могу только предположить, что моя конфигурация cron неверна, но до сих пор я не нашел никаких ресурсов, которые могли бы помочь.

Настройка Cron

Мой cron был настроен на сервере для запуска каждые 5 минут (вот где мне не нравится, когда Magento абстрагирует закадычных друзей).

Кронтаб-е

*/5 * * * * / бункер/ш/home/site/public_html/cron.sh > /dev/null и 2>1

Для выполнения упражнения по запуску моего cron я запускаю cron из командной строки $ /bin/sh cron.sh - Внутри cron_schedule Я вижу, что executed_at обновлен, но не для моей работы, а для существующих модулей крон.

Фрагмент

Config.xml

<config>

    ...

    <crontab>
        <jobs>
            <myvendor_mymodule>
                <schedule>
                    <cron_expr>0 0 * * *</cron_expr>
                </schedule>
                <run>
                    <model>myvendor_mymodule/cron::someMethod</model>
                </run>
            </myvendor_mymodule>
        </jobs>
    </crontab>
</config>

App/code/local/Myvendor/Mymodule/Model/Cron.php

class Myvendor_Mymodule_Model_Cron
{
    //public static function someMethod() #= no luck either
    public function someMethod()
    {
        Mage::log('test', null, 'hello.log');
    }
}
Author: ash, 2014-02-14

2 answers

Таблицы cron_schedule содержат список запланированных заданий, включая время их добавления в расписание, запланированное время выполнения, состояние и, когда они будут выполнены, время их завершения.

Таблица заполняется при запуске скрипта cron.sh (должен запускаться каждые 5 минут с помощью системного cronjob (crontab -e-u)). Первый вызов заполнит таблицу, а затем обработает очередь. Вы можете рассматривать таблицу cron_schedule как очередь заданий, в которой время выполнения зависит от ваш config.xml.

Magento автоматически назначит хроны, так что вам не нужно об этом заботиться. Убедитесь, что вы обновили кэш конфигурации после добавления задания cron, и cron.sh периодически запускается. Также обычно лучше запускать cron.sh вместо cron.php, потому что в новых версиях Magento использует другие режимы запуска и вызывает cron.php с соответствующей конфигурацией, umask, путем и т.д. автоматически.

Это расширение может быть вам интересно: https://github.com/AOEmedia/Aoe_Scheduler

 3
Author: thebod, 2014-02-14 14:13:17

Убедитесь, что ваш cron.php или cron.sh настроен на регулярное выполнение в файле cron Linux.

Из руководство пользователя magento cron

В cron.php файл, расположенный в корневом каталоге Magento, необходимо будет запускать периодически, например каждые 15 минут. В принципе, этот сценарий проверит, нужно ли ему выполнять какие-либо задачи, и нужно ли планировать какие-либо будущие задачи.

Обновление

Проблема в том, что <cron_expr>0 0 * * *</cron_expr> означает Ежедневно в полночь. Но magento - это не сразу помещать задачи в cron_schedule. Только если время выполнения очень близко. Попробуйте изменить cron_expr на <cron_expr>*/5 * * * *</cron_expr>. И вы должны увидеть разницу.

 0
Author: oleksii.svarychevskyi, 2014-02-14 14:15:35