php thinkphp5 消息队列
时间: 2023-08-01 08:06:25 浏览: 167
在ThinkPHP5中,可以使用Redis或者AMQP作为消息队列。下面以Redis为例,介绍如何使用消息队列。
1. 安装Redis
在使用Redis作为消息队列之前,需要先安装Redis。可以参考官方文档进行安装。安装完成后,确保Redis服务已经启动。
2. 配置消息队列
打开config/queue.php文件,进行配置。将默认的sync改为redis,并配置Redis的连接信息,如下所示:
```php
return [
// 默认使用的队列连接
'default' => env('queue.driver', 'redis'),
// 队列连接信息
'connections' => [
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
'block_for' => null,
],
],
];
```
3. 创建任务
在app\job目录下创建一个任务类,例如TestJob.php,示例代码如下:
```php
<?php
namespace app\job;
class TestJob
{
public function fire($job, $data)
{
// 处理任务
echo '处理任务:' . json_encode($data) . PHP_EOL;
// 删除任务
$job->delete();
}
}
```
4. 添加任务到队列
在控制器或其他地方添加任务到队列中,示例代码如下:
```php
<?php
namespace app\index\controller;
use think\Controller;
use think\Queue;
class Index extends Controller
{
public function index()
{
// 添加任务到队列
$jobHandlerClassName = 'app\job\TestJob'; // 任务的类名
$jobData = ['uid' => 1, 'title' => '测试任务']; // 任务数据
$queueName = 'test'; // 队列名称
Queue::push($jobHandlerClassName, $jobData, $queueName);
}
}
```
5. 执行队列任务
使用命令行执行队列任务,示例代码如下:
```
php think queue:work --queue test
```
其中test为队列名称,可以根据实际情况修改。
执行成功后,会输出处理任务的日志信息。
以上就是使用Redis作为消息队列的基本流程,如果需要使用AMQP,可以参考ThinkPHP5官方文档进行配置。
阅读全文