thinkphp6 使用 topthink/think-queue 配置守护进程消息队列
短信预约 -IT技能 免费直播动态提醒
当前演示使用宝塔面板
安装composer require topthink/think-queue
配置config/queue.php
return [ //驱动类型,可选择 sync(默认):同步执行,database:数据库驱动,redis:Redis驱动 'default' => 'redis', 'connections' => [ 'sync' => [ 'type' => 'sync', ], 'database' => [ 'type' => 'database', 'queue' => 'default', 'table' => 'jobs', 'connection' => null, ], 'redis' => [ 'type' => 'redis', 'queue' => 'default', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', 'select' => 0, 'timeout' => 0, 'persistent' => false, ], ], 'failed' => [ 'type' => 'none', 'table' => 'failed_jobs', ],];
添加消息入队
namespace app\controller;use app\BaseController;use app\job\Test;use think\facade\Queue;class Index extends BaseController{ public function work() { // 参数 $data = [ 'id' => 1, 'username' => 'zhagnsan', 'time' => time(), 'type' => 1 ]; $name = 'testQueue'; $queue = Queue::push(Test::class, $data, $name); if($queue != false){ echo '加入队列成功'; }else{ echo '加入队列失败'; } }}
创建job/Test消耗队列
namespace app\job;use think\facade\Log;use think\queue\Job;class Test{ public function fire(Job $job, $data) { $isDoJob = $this->doJob($data); if($isDoJob){ $job->delete(); }else{ $attempts = $job->attempts(); if($attempts < 5){ $job->release(2); } } } public function failed($data) { Log::error('消息队列达到最大重复执行次数后失败'); } public function doJob($data) { if($data['type'] == 1){ echo '消息队列执行成功'; Log::info('执行成功'); return true; }else{ echo '消息队列执行失败'; Log::info('执行失败'); return false; } }}
命令调用
php think queue:work --queue testQueue
效果图
宝塔安装Supervisor
安装成功后添加守护进程
启动命令直接使用php think queue:work --queue testQueue
,其他根据自己项目情况填写
报错:The Process class relies on proc_open, which is not available on your PHP installation
解决办法:是因为禁用了proc_open函数导致的报错,在php.ini中删掉这个函数重启PHP即可
来源地址:https://blog.csdn.net/qq_44747508/article/details/129562611
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341