【问题标题】:Create Magento cron job task programmatically以编程方式创建 Magento cron 作业任务
【发布时间】:2020-07-27 11:06:21
【问题描述】:

我想在不使用 config.xml 文件的情况下以编程方式创建 cron 作业任务。 有可能吗?

【问题讨论】:

    标签: magento cron


    【解决方案1】:

    我在以下位置找到了解决方案: http://www.ayasoftware.com/how-create-cron-jobs-dynamically-magento

    $timecreated   = strftime("%Y-%m-%d %H:%M:%S",  mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")));
    $timescheduled = strftime("%Y-%m-%d %H:%M:%S", mktime(date("H"), date("i")+ 5, date("s"), date("m"), date("d"), date("Y")));
    $jobCode = 'job_id';
    
    try {
        $schedule = Mage::getModel('cron/schedule');
         $schedule->setJobCode($jobCode)
            ->setCreatedAt($timecreated)
            ->setScheduledAt($timescheduled)
            ->setStatus(Mage_Cron_Model_Schedule::STATUS_PENDING)
            ->save();
       } catch (Exception $e) {
         throw new Exception(Mage::helper('cron')->__('Unable to save Cron expression'));
       }
    

    【讨论】:

      【解决方案2】:

      我不明白这样做的目的是什么,可能有更好的方法,但我认为应该这样做

      我从未遇到过这种情况,但您可能可以使用 Mage_Cron_Model_Schedule Mage::getModel('cron/schedule') 类并相应地设置数据,然后保存。您需要在 config.xml 中定义什么是 cron 任务,以便 magento 能够关联。

      它应该填充表 cron_schedule 以检查要运行的 cron 任务。

      【讨论】:

        【解决方案3】:

        使用以下代码解决问题。

        use Magento\Cron\Model\ScheduleFactory;
        
        $jobCode = 'jobcode';
        
        $schedule = $this->scheduleFactory->create();
        
        $schedule->setJobCode($jobCode) ->setCreatedAt($timecreated) ->setScheduledAt($timescheduled) ->setStatus(self::STATUS_PENDING)->save();
        

        【讨论】:

        • 始终在代码周围使用反引号,例如 YOUR_CODE_HERE。这使您的答案更具可读性。
        猜你喜欢
        • 2010-10-11
        • 2019-09-28
        • 1970-01-01
        • 2016-08-11
        • 2014-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多