thinkphp 延时队列
2021/9/10 11:04:55
本文主要是介绍thinkphp 延时队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
安装 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
效果
第一个是立即执行,第二个则是十秒后执行
这篇关于thinkphp 延时队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享