任务队列怎么使用
自定义函数是
function my_cron_dingshi($params) {
$data = array(
'uid' => $params['code1'],
'title' => $params['code2'],
'inputtime' => SYS_TIME
);
$rt = \Phpcmf\Service::M()->db->table('1_form_test')->insert($data);
if($rt){
return dr_return_data(1, 'ok');
}else{
return dr_return_data(0, '失败原因');
}
}定义了一个控制器
public function test() {
// 写你的程序代码
$rt = \Phpcmf\Service::M('cron')->add_cron(SITE_ID, "dingshi", [
'code1' => '参数1',
'code2' => '参数2',
'code3' => '参数3',
]);
print_r($rt);
}手动访问控制器的结果
Array ( [code] => 118 [msg] => [data] => Array ( ) )
后台中任务队列中没有看到添加的任务,但是发现表中插入了数据
1_form_test表插入数据说明你任务已经成功了
流程是:
先把任务插入到任务队列
分支1:然后系统就自动执行任务,执行完毕,入库formtest表记录,删除任务队列记录
分支2:如果没有设置自动任务代码,就会先入库到任务对列表,然后手动去点执行,点了执行成功,删除本条任务记录
我现在的问题是怎么插入到任务队列
看文档是写那个add_cron的函数就行了
但是我执行那个函数就直接入库formtest表了
易学习
function my_cron_dingshi($params) { $data = array( 'uid' => $params['code1'], 'title' => $params['code2'], 'inputtime' => SYS_TIME ); $rt = \Phpcmf\Service::M()->db->table('1_form_test')->insert($data); if($rt){ return dr_return_data(0, '数据插入成功了,我只看看是否在任务队列里面'); }else{ return dr_return_data(0, '失败原因'); } }你把参数改成0,故意让他失败,你就可以在任务队列里面看到了,因为你都执行成功了,cms会自动删除记录的public function test() { // 写你的程序代码 $rt = \Phpcmf\Service::M('cron')->add_cron(SITE_ID, "dingshi", [ 'code1' => '参数1', 'code2' => '参数2', 'code3' => '参数3', ]); print_r($rt); }就直接执行了这个函数function my_cron_dingshi($params) { $data = array( 'uid' => $params['code1'], 'title' => $params['code2'], 'inputtime' => SYS_TIME ); $rt = \Phpcmf\Service::M()->db->table('1_form_test')->insert($data); if($rt){ return dr_return_data(1, 'ok'); }else{ return dr_return_data(0, '失败原因'); } }按您的参数改成0,确实看到在队列里了。但是这样我直接执行my_cron_dingshi就行了啊任务队列不就是为了先准备几个任务,然后到时间访问/index.php?s=api&c=run作为定时任务吗易学习