<?php /** * 直播计划任务表 */ namespace Common\Service; use Common\Model\CronModel; use VcySDK\Cron; use VcySDK\Service; class CronService extends AbstractService { // 构造方法 public function __construct() { $this->_d = new CronModel(); parent::__construct(); } /** * 创建计划任务并保存 * @param $lmId * @param $remark * @param $type * @param $time * @return bool */ public function createCron($lmId, $remark, $type, $time) { $cronSdk = new Cron(Service::instance()); // 建立 Job 发送消息 $cronResult = $cronSdk->add([ 'crRemark' => $remark, 'crType' => Cron::CR_TYPE_CALLBACK, 'crParams' => json_encode([ 'lm_id' => $lmId, 'type' => $type, ]), 'crMethod' => 'POST', // 回调地址 'crReqUrl' => oaUrl('Frontend/Callback/PushMsg/Index'), 'crTimes' => 1, 'crCron' => rgmdate((String)$time, 's i G j n ? Y'), 'crMonitorExecution' => $cronSdk::CR_MONITOR_EXECUTION_FALSE, 'crDescription' => '直播开始时推送消息提醒', ]); if (empty($cronResult['crId'])) { E(L('_ERR_CRON_OPTION_FAILED', ['option' => '创建'])); } // 记录计划任务 $this->_d->insert([ 'lm_id' => $lmId, 'cron_id' => $cronResult['crId'], 'type' => $type ]); return true; } }