前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TP6.0 消息队列 topthink/think-queue

TP6.0 消息队列 topthink/think-queue

作者头像
很酷的站长
发布2023-01-16 10:09:09
1.2K0
发布2023-01-16 10:09:09
举报
1. TP6.0 消息队列 topthink/think-queue

topthink/think-queue 是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包

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

packagist : https://packagist.org/packages/topthink/think-queue

2. think-queue 各主版本对应适用的TP版本

think-queue 版本号

适用的TP版本

1.x

ThinkPHP5.0

2.x

ThinkPHP5.1

3.x

ThinkPHP6.0

3. 安装 topthink/think-queue

在应用根目录执行命令, 下载 topthink/think-queue 扩展

安装扩展后会自动生成消息队列配置文件 config/queue.php

站长源码网

代码语言:javascript
复制
composer require topthink/think-queue
4. topthink/think-queue 驱动类型

驱动类型

对应的类型值

sync

同步执行, 默认值

database

数据库驱动

redis

Redis驱动 【推荐】

其他自定义的完整的类名

如果驱动类型为 sync, 则以下两种发布任务的方式都会同步执行

当驱动类型修改为 redis 时, think\facade\Queue::later() 才会异步执行

代码语言:javascript
复制
// 立即执行
think\facade\Queue::push($job, $data = '', $queue = null);
// 延迟执行
think\facade\Queue::later($delay, $job, $data = '', $queue = null);
代码语言:javascript
复制
return [
    'default'     => 'sync',
    'connections' => [
        'sync'     => [
            'type' => 'sync',
        ],
        ...
    ],
    'failed'      => [
        'type'  => 'none',
        'table' => 'failed_jobs',
    ],
];
5. 发布任务

代码语言:javascript
复制
// 立即执行
think\facade\Queue::push($job, $data = '', $queue = null);
// 延迟执行
// $delay 延迟时间,单位秒,几秒后执行
// $job   任务对象
// $data  自定义数据
// $queue 队列名称
think\facade\Queue::later($delay, $job, $data = '', $queue = null);
代码语言:javascript
复制
/**
 * 获取任务对象
 * 发布任务时使用
 * @param string $class
 * @param string $action
 * @example getJob(\app\queue\Task::class, 'fire')
 * @return string app\queue\task@fire
 */
function getJob(string $class, string $action)
{
    // 使用示例
    // $delay = 10;
    // $job = getJob(\app\queue\Task::class, 'fire');
    // \think\facade\Queue::later($delay, $job, $data);
    return implode('@', [strtolower($class), $action]);
}
6. 监听任务并执行

两种命令

代码语言:javascript
复制
php think queue:work
php think queue:listen

两种命令的具体的可选参数可以输入命令加 —help 查看

代码语言:javascript
复制
php think queue:work --help
php think queue:listen --help

常用参数

代码语言:javascript
复制
// 任务执行五次还未成功, 第六次进入failed方法
php think queue:listen --tries 5
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. TP6.0 消息队列 topthink/think-queue
  • 2. think-queue 各主版本对应适用的TP版本
  • 3. 安装 topthink/think-queue
  • 4. topthink/think-queue 驱动类型
  • 5. 发布任务
  • 6. 监听任务并执行
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档