以编程方式创建 Magento 定时任务任务

6
我想要以编程方式创建cron工作任务,而不使用config.xml文件。这是否可行?
3个回答

6
我在以下网站找到了解决方案: http://www.ayasoftware.com/how-create-cron-jobs-dynamically-magento。该网站提供了动态创建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_ScheduleMage::getModel('cron/schedule')并相应地设置数据,然后保存。无论如何,你需要在Magento的config.xml中定义什么是cron任务,以便关联。
它应该填充cron_schedule表,以便检查要运行的cron任务。

0
使用以下代码来解决问题。
use Magento\Cron\Model\ScheduleFactory;

$jobCode = 'jobcode';

$schedule = $this->scheduleFactory->create();

$schedule->setJobCode($jobCode) ->setCreatedAt($timecreated) ->setScheduledAt($timescheduled) ->setStatus(self::STATUS_PENDING)->save();

始终使用反引号(backtick)包围您的代码,例如 YOUR_CODE_HERE。这样可以使您的答案更易读。 - Nikhil Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接