thinkphp5 消息队列
时间: 2023-11-16 17:00:55 浏览: 167
ThinkPHP5中的消息队列可以使用Redis或AMQP作为消息代理。以下是使用Redis作为消息代理的示例:
首先,确保已经安装了Redis扩展和Redis服务器。然后在config目录下创建queue.php配置文件,配置Redis连接信息和队列监听器:
```php
return [
'default' => 'redis',
'connections' => [
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'expire' => 60,
],
],
'failed' => [
'database' => 'mysql',
'table' => 'failed_jobs',
],
];
```
接下来,在app目录下创建一个job目录,用于存放队列任务。例如,创建一个发送邮件的任务MailJob.php:
```php
namespace app\job;
use think\queue\Job;
class MailJob
{
public function fire(Job $job, $data)
{
$email = $data['email'];
$content = $data['content'];
// 发送邮件的逻辑处理
// 执行完成后删除任务
$job->delete();
}
}
```
然后,在任何你想要使用队列的地方,可以使用以下代码将任务推入队列:
```php
use think\Queue;
Queue::push('app\job\MailJob', ['email' => 'test@example.com', 'content' => 'hello world']);
```
最后,启动队列监听器,监听并处理队列任务:
```
php think queue:listen
```
这样就可以使用Redis作为消息代理,在ThinkPHP5中实现消息队列了。
阅读全文