thinkphp-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性:
- 消息的发布,获取,执行,删除,重发,失败处理,延迟执行,超时控制等
- 队列的多队列, 内存限制 ,启动,停止,守护等
- 消息队列可降级为同步执行
1、通过composer安装thinkPHP消息队列
composer require topthink/think-queue
2、在 application/extra/queue.php 文件中配置消息队列驱动
<?phpuse think\Env;return ['connector' => 'redis', // // 驱动类型,可选择 sync(默认):同步执行,database:数据库驱动,redis:Redis驱动,topthink:Topthink驱动'expire' => null, // 任务的过期时间,默认为60秒; 若要禁用,则设置为 null'default' => 'defaultQueue', // 默认的队列名称'host' => Env::get('redis.host', '127.0.0.1'), // redis 主机ip'port' => Env::get('redis.port', 6379), // redis 端口'password' => Env::get('redis.password', ''), // redis 密码'select' => Env::get('redis.database', 0), // 使用哪一个 db,默认为 db0'timeout' => 0, // redis连接的超时时间'persistent' => false,
];
配置文件中的 expire 参数说明:
expire 参数指的是任务的过期时间, 单位为秒。 过期的任务,其准确的定义是
任务的状态为执行中
任务的开始执行的时刻 + expire > 当前时刻
expire 不为null 时 ,thinkphp-queue 会在每次获取下一个任务之前检查并重发过期(执行超时)的任务