Как мне зарегистрировать 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');
}
}
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
Убедитесь, что ваш 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>
. И вы должны увидеть разницу.