业务经理

微信扫描以上二维码

028-61286886

技术咨询

任务队列怎么使用

迅睿框架 更新 2020-08-17 17:14:47 卧龙隐者

任务队列怎么使用

自定义函数是

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 · 2020-08-17 15:56:25
    执行成功的任务会删除记录的,所以你看不到记录
  • 卧龙隐者 #2 · 2020-08-17 15:59:09
    那怎么加入队列文档上应该就是说添加add_cron的那个函数平平
  • 如来 #3 · 2020-08-17 16:04:40
    发现表中插入了数据,说明这个任务已经执行成功啦,说明你成功了
  • 卧龙隐者 #4 · 2020-08-17 16:09:03
    我可能没说清楚,是1_form_test表插入数据但应该是先把任务插入到任务队列,然后到点再执行任务吧我这里是都没插入到任务队列,任务就直接执行了如来
  • 易学习 #5 · 2020-08-17 16:39:59

    1_form_test表插入数据说明你任务已经成功了

    流程是:

    先把任务插入到任务队列

    分支1:然后系统就自动执行任务,执行完毕,入库formtest表记录,删除任务队列记录

    分支2:如果没有设置自动任务代码,就会先入库到任务对列表,然后手动去点执行,点了执行成功,删除本条任务记录


  • 胡金海 #6 · 2020-08-17 16:43:13
    作者之前推荐使用cron.php
  • 卧龙隐者 #7 · 2020-08-17 16:43:44

    我现在的问题是怎么插入到任务队列

    看文档是写那个add_cron的函数就行了

    但是我执行那个函数就直接入库formtest表了


    易学习

  • 卧龙隐者 #8 · 2020-08-17 16:44:44
    怎么用呢胡金海
  • 疾风 #9 · 2020-08-17 16:45:19
    Array ( [code] => 118
    这个id 118就是任务队列的记录id号,应该你已经执行成功了,系统就删除了118的记录,你就看不到,学习哥分析的好
  • 易学习 #10 · 2020-08-17 16:47:12
    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会自动删除记录的
  • 卧龙隐者 #11 · 2020-08-17 16:53:50
    现在是执行这个函数
    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作为定时任务吗易学习
  • 易学习 #12 · 2020-08-17 17:02:24
    那可能是创始人技术大神的程序有bug,我发邮件问问创始人大哥
  • 卧龙隐者 #13 · 2020-08-17 17:07:10
    好的谢谢那请问一下,定时任务,您们都是怎么处理的?易学习
  • 易学习 #14 · 2020-08-17 17:09:51
    满意答案
    我习惯用的这个方法参考文档:《自定义任务Cron.php》定时我都写进bt面板里面
  • 卧龙隐者 #15 · 2020-08-17 17:14:47
    @易学习:好的,我研究研究这个

迅睿系统漏洞

多语言翻译Seolang
多语言翻译Seolang(2026-09-21)
1. 新增译文数据备份恢复页面,支持断点续传 2. 多语言声明中心...
AI文章生成器
AI文章生成器(2026-09-20)
任务拆分独立配置 新增AI生成关键词 新增指令模板 新增品牌信...
GEO系统
GEO系统(2026-09-20)
后台 AEO 与运营端对齐:区域、跑批、CSV、补强、剧本均可在迅睿...
GeoSeo工具箱
GeoSeo工具箱(2026-09-18)
修正菜单规范
后台二次登陆验证
后台二次登陆验证(2026-09-18)
新增邮箱验证 新增短信验证
京东云短信
京东云短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
创蓝短信
创蓝短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
火山引擎短信
火山引擎短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
外贸多语言建站
外贸多语言建站(2026-09-17)
优化独立内容过滤机制