时间表太晚

时间:2017-11-14 13:33:31

标签: magento cron magento-1.9 scheduler

当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));
    }

1 个答案:

答案 0 :(得分:0)

  

当调度程序找到假定的挂起作业时,会发生这种情况   计划的时间长于配置的时间   '系统/ cron的/ schedule_lifetime'。默认情况下,此值设置为15   分钟。

     

您可能会遇到两个不同的问题   错误:

     
      
  1. Cron未配置为经常运行:如果不触发cron   通常足够的任务开始堆积和最可能的任务   在他们出现的时候,他们的日程安排太迟了   由调度程序执行。而不是增加   scheduler_lifetime设置你应该增加频率cron   被叫到* / 5 * * * *(每5分钟)甚至* * * * *   (每分钟)。
  2.   
  3. 你有很长时间运行的cron作业会阻止执行   其他工作:如果您要导入数据,索引产品,   通过cron生成报告或执行其他长期工作(   通常是一个好主意)其他工作不会并行运行   (除非你运行的是cron.php而不是cron.sh)。这将   导致这些工作没有被执行。找出哪些工作   防止他人跑(通过查看时间线视图)和   在不同的cron组中运行它们。 (看看这个更多   信息并检查添加到版本> 0.5.0的功能   更简单的配置和管理cron组的方法。
  4.   

来源https://github.com/AOEpeople/Aoe_Scheduler/blob/master/doc/faq.md