ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

thinkphp 延时队列

2021-09-10 11:02:48  阅读:172  来源: 互联网

标签:队列 redis queue Test job 延时 thinkphp think


安装 thinkphp-queue

github : https://github.com/top-think/think-queue

composer: 

composer require topthink/think-queue

  报错有可能是版本问题, 可以

composer require topthink/think-queue ^1.*

  

配置 extra/queue.php,我用的是redis异步,Sync则是同步

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: yunwuxin <448901948@qq.com>
// +----------------------------------------------------------------------

return [
    'connector'  => 'Redis',          // Redis 驱动
    'expire'     => 60,             // 任务的过期时间,默认为60秒; 若要禁用,则设置为 null
    'default'    => 'default',    // 默认的队列名称
    'host'       => '127.0.0.1',       // redis 主机ip
    'port'       => 6379,        // redis 端口
    'password'   => '',             // redis 密码
    'select'     => 0,          // 使用哪一个 db,默认为 db0
    'timeout'    => 0,          // redis连接的超时时间
    'persistent' => false,
];

  

使用

在app下创建job目录,建立Test.php,并编辑

<?php
namespace app\job;

use think\queue\job;

class Test
{

    public function fire(Job $job, $data){
        if($job->attempts() > 2){
            \think\Log::write('Test执行失败');
            $job->delete();
        }else{
            db('users')->insert([
                'username' => rand(1000,9999),
            ]);

            $job->delete();
        }

    }
}

  

在控制器调用

/**
     * 测试延时队列
     * Author : LYQ
     * Date : 2021/9/10 10:40
     */
    public function test_job()
    {
        Queue::later('10','app\job\Test',[],'Test');  //延迟十秒执行,Test为队列名称

Queue::push('app\job\Test',[],'Test'); //立即执行
}

  

监听脚本

php think queue:listen --queue Test

  

效果

 

 

 

 

第一个是立即执行,第二个则是十秒后执行

标签:队列,redis,queue,Test,job,延时,thinkphp,think
来源: https://www.cnblogs.com/jwyq/p/15250430.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有