Как переопределить crontab существующего модуля
Я не хочу, чтобы Mage_Newsletter постоянно отправлял электронную почту, поэтому я создаю пользовательский модуль внутри local
, чтобы удалить cron,
#/var/www/html/public_html/app/code/local/MyComp/CustomConfig/etc/config.xml
<config>
<modules>
<MyComp_CustomConfig>
<version>0.1.0</version>
</MyComp_CustomConfig>
</modules>
<crontab>
<jobs>
<newsletter_send_all>
<run>
<model>newsletter/observer::scheduledSend</model>
</run>
</newsletter_send_all>
</jobs>
</crontab>
</config>
Обратите внимание, что у меня нет тега <schedule>
Затем внутри
#/var/www/html/public_html/app/etc/modules/MyComp_CustomConfig.xml
<config>
<modules>
<MyComp_CustomConfig>
<active>true</active>
<codePool>local</codePool>
</MyComp_CustomConfig>
<depends>
<Mage_Newsletter />
</depends>
</modules>
</config>
Я все еще вижу, как newsletter_send_all
выполняется внутри таблицы "cron_schedule" после очистки кэша. Я попытался добавить
<schedule>
<cron_expr>0 3 * * *</cron_expr>
</schedule>
Которые запускаются в 3 часа ночи, очищают кэш и обновляют, но newsletter_send_all
все равно выполняются немедленно в моей таблице (еще не 3 часа ночи). Пожалуйста, помогите, кто я такой пропал без вести?
Примечание: мое серверное время не UTC, оно работает с местным часовым поясом.
1 answers
Я обычно так делаю, и это работает.
Вот в чем, я думаю, ваша проблема с этим конкретным cron.
По умолчанию задание newsletter_send_all
выполняется каждые 5 минут.
При запуске cron.php
magento выполняет задания, которые должны выполняться в данный момент, но планирует их на следующие X минут (я думаю, на 20 минут).
Поэтому, если вы сначала выполнили cron, а newsletter_send_all
все еще было установлено на 5 минут, то для следующего запуска было запланировано 3 (или 4) дополнительных задания для newsletter_send_all
.
После этого вы изменили cron_expr
и снова выполнили cron, но 3 задания, которые были запланированы ранее, все еще запланированы, поэтому они будут выполнены.
Дайте ему полчаса или около того и снова запустите cron. Посмотрите, будет ли рассылка отправлена снова.
И я настоятельно рекомендую это расширение: https://github.com/fbrnc/Aoe_Scheduler . Среди других интересных вещей это позволяет вам видеть, когда запланирован каждый cron, и если ваши изменения на cron_expr
учитываются рассмотрение.