当Cron使用“newsletter_send_all”执行此作业代码时,其状态将被遗漏并传递如下消息。目前使用magento的defalt cron设置和UTC时间。我的Cron.php每5分钟执行一次。请帮我解决这个古玩问题。
exception 'Mage_Core_Exception' with message 'Too late for the schedule' in /home/test/public_html/app/Mage.php:595
Stack trace:
#0 /home/test/public_html/app/code/core/Mage/Cron/Model/Observer.php(293): Mage::throwException('Too late for th...')
#1 /home/test/public_html/app/code/core/Mage/Cron/Model/Observer.php(72): Mage_Cron_Model_Observer->_processJob(Object(Mage_Cron_Model_Schedule), Object(Mage_Core_Model_Config_Element))
#2 /home/test/public_html/app/code/core/Mage/Core/Model/App.php(1338): Mage_Cron_Model_Observer->dispatch(Object(Varien_Event_Observer))
#3 /home/test/public_html/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Cron_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#4 /home/test/public_html/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('default', Array)
#5 /home/test/public_html/cron.php(75): Mage::dispatchEvent('default')
#6 {main}
还在newslatter模块的核心观察者中进行了以下修改以进行测试,但仍无法正常工作
public function scheduledSend($schedule)
{
$countOfQueue = 1; // default 3 Modified on 14 Nov 17
$countOfSubscritions = 1; //default 20 Modified on 14 Nov 17
$collection = Mage::getModel('newsletter/queue')->getCollection()
->setPageSize($countOfQueue)
->setCurPage(1)
->addOnlyForSendingFilter()
->load();
$collection->walk('sendPerSubscriber', array($countOfSubscritions));
}
答案 0 :(得分:0)
当调度程序找到假定的挂起作业时,会发生这种情况 计划的时间长于配置的时间 '系统/ cron的/ schedule_lifetime'。默认情况下,此值设置为15 分钟。
您可能会遇到两个不同的问题 错误:
- Cron未配置为经常运行:如果不触发cron 通常足够的任务开始堆积和最可能的任务 在他们出现的时候,他们的日程安排太迟了 由调度程序执行。而不是增加 scheduler_lifetime设置你应该增加频率cron 被叫到* / 5 * * * *(每5分钟)甚至* * * * * (每分钟)。
- 你有很长时间运行的cron作业会阻止执行 其他工作:如果您要导入数据,索引产品, 通过cron生成报告或执行其他长期工作( 通常是一个好主意)其他工作不会并行运行 (除非你运行的是cron.php而不是cron.sh)。这将 导致这些工作没有被执行。找出哪些工作 防止他人跑(通过查看时间线视图)和 在不同的cron组中运行它们。 (看看这个更多 信息并检查添加到版本> 0.5.0的功能 更简单的配置和管理cron组的方法。
醇>
来源https://github.com/AOEpeople/Aoe_Scheduler/blob/master/doc/faq.md