以编程方式创建Magento 2 cron作业任务
要在2个门户之间同步数据,我需要手动触发一些操作,单击按钮需要通过编程方式安排cron。我找到了解决方案,但它适用于以编程方式创建Magento 2 cron作业任务,cron,magento2,Cron,Magento2,要在2个门户之间同步数据,我需要手动触发一些操作,单击按钮需要通过编程方式安排cron。我找到了解决方案,但它适用于Magento 1 Magento 1的代码如下所示: $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
Magento 1
Magento 1的代码如下所示:
$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'));
}
Magento 2
操作代码
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Framework\Controller\Result\JsonFactory;
use ABC\Du\Helper\Data;
class Products extends Action
{
protected $resultJsonFactory;
protected $schedule;
/**
* @var Data
*/
protected $helper;
/**
* @param Context $context
* @param Model $schedule
* @param JsonFactory $resultJsonFactory
* @param Data $helper
*/
public function __construct(
Context $context,
Magento\Cron\Model\Schedule $schedule,
JsonFactory $resultJsonFactory,
Data $helper
)
{
$this->resultJsonFactory = $resultJsonFactory;
$this->helper = $helper;
$this->schedule = $schedule;
parent::__construct($context);
}
/**
* Collect relations data
*
* @return \Magento\Framework\Controller\Result\Json
*/
public function execute()
{
$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 job
} catch (Exception $e) {
// exception handle
}
$message = 'Cron schedule at ' . $timecreated . ' will execute at ' . $timescheduled;
/** @var \Magento\Framework\Controller\Result\Json $result */
$result = $this->resultJsonFactory->create();
return $result->setData(['success' => true, 'time' => $message]);
}
}
它引发运行时异常
异常#0(Magento\Framework\Exception\RuntimeException):类型
创建对象时出错
请参考此URL以编程方式在Magento 2中创建自定义cron作业
请参考此URL以编程方式在Magento 2中创建自定义cron作业