## **章节2:Laravel5.5事件监听机制(注册-监听-任务调度)【启用任务队列篇】**
##### <blockquote class="danger"><p>Laravel 事件机制实现了一个简单的观察者模式,让我们可以订阅和监听应用中出现的各种事件。事件类 (Event) 类通常保存在`app/Events`目录下,而它们的监听类 (Listener) 类被保存在`app/Listeners`目录下。如果你在应用中看不到这些文件夹也不要担心,因为当你使用 Artisan 命令来生成事件和监听器时他们会被自动创建</p></blockquote>
* [ ] 准备前工作
1. 安装 predis/predis 扩展,命令:`composer require predis/predis:"^1.1"`
2. 配置.env.production(.env)文件,如图所示:
![](https://img.kancloud.cn/55/0b/550ba935c6dc47166a319f106f71c997_324x132.png)
```
BROADCAST_DRIVER=log
CACHE_DRIVER=redis
SESSION_DRIVER=redis
SESSION_LIFETIME=120
QUEUE_DRIVER=redis
```
3.在根目录下执行两个命令,生成迁移文件和队列执行失败的mysql 数据记录表:
```
php artisan queue:failed-table
```
```
php artisan migrate
```
<span style='color:red;font-weight:bolder'>注意:
<span style='margin-left:10px;'>1. 修改玩.env配置文件后,一定在容器内网站根目录执行清除和生成缓存命令:php artisan route:cache</span>
<span style='margin-left:10px;'>2. 如果想使用守护进程(常驻进程),点击链接Supervisor:</span>(https://learnku.com/docs/laravel/5.5/queues/1324#supervisor-configuration)</span>
* [ ] 创建事件监听器(包含事件和监听器)
1. 执行命令:php artisan event:generate,如果是第一次执行,会生成 Events(事件目录) 和 Listeners(监听器目录)
![](https://img.kancloud.cn/2a/18/2a1863ba527e2d54d28c9028ed938145_782x70.png)
2. 在 app/Providers/EventServiceProvider.php 文件中编写要执行的事件和事件对应的监听器,如图所示
![](https://img.kancloud.cn/9e/da/9eda092fc373e6688d26c78c006cc191_1704x943.png)
3. 按照上述操作,编写 Tests2MongoEvent 事件 和 Tests2MongoListener 事件监听器,如图所示
Tests2MongoEvent.php
![](https://img.kancloud.cn/3f/ee/3fee6d29e5213e32f4402a2195923471_1700x967.png)
![](https://img.kancloud.cn/b2/ec/b2ec45f53fb2906e717cf4b782878174_1709x979.png)
![](https://img.kancloud.cn/9e/00/9e00b44e72226232dc0ce8e9bea048a0_1545x958.png)
Tests2MongoListener.php
![](https://img.kancloud.cn/5e/a3/5ea31dcea853b9bce171503e7e0a7c3a_1436x977.png)
![](https://img.kancloud.cn/7f/23/7f2321ac33d2c4e2583c77e586e2ef4a_1284x940.png)
Tests2MongoModel.php
![](https://img.kancloud.cn/ef/6d/ef6d41cd51fc3275bf15b408bb8f97f0_1352x943.png)
![](https://img.kancloud.cn/59/f5/59f5fce6e487b4414485e2164c1aca83_1101x800.png)
Name.php
![](https://img.kancloud.cn/d3/64/d36485b48c1093cf94cb1a877ed34098_1093x665.png)
4. 开始使用事件,使用操作如下
![](https://img.kancloud.cn/af/ab/afabf2481a0c8733bb751c21e78d8a41_1415x747.png)
![](https://img.kancloud.cn/99/36/993698eb1ce47116d85cfe27526f3d9e_1443x802.png)
5. 显示结果如下
![](https://img.kancloud.cn/4b/8c/4b8c27a5d338eb39648a39093c34b32d_1495x455.png)
![](https://img.kancloud.cn/6f/78/6f7822e15e327ecfd91d7115da2ff3b8_1879x535.png)
6. 执行任务队列,命令:【php artisan queue:listen --queue=ceshi:save:mongo】
第一种方式:php artisan queue:listen --queue=ceshi:save:mongo
第二种方式: php artisan queue:work --queue=ceshi:save:mongo
![](https://img.kancloud.cn/ff/43/ff43c5195ec88206829cf3eb620d0499_1001x243.png)
![](https://img.kancloud.cn/c9/77/c977791b0e69c6882c20fb7fbcf02386_888x443.png)
![](https://img.kancloud.cn/7b/1b/7b1ba883c72ae1d8ddab6af103c62bdf_1776x912.png)
注意:命令:`php artisan queue:work`,只执行默认的消息队列,如果需要配置,配置如下:
.env.production 配置如下:
![](https://img.kancloud.cn/dc/73/dc7318120fa6cb654a2b5c0a16811386_922x569.png)
/config/queue.php 配置如下:
![](https://img.kancloud.cn/70/b8/70b81ae874de0a572bf1fd38feb643e3_1389x610.png)
进入容器内,先执行更新缓存命令:php artisan config:cache ,再执行:php artisan queue:work
![](https://img.kancloud.cn/7c/54/7c5434a0bde9438c5f9312841712554e_757x393.png)
![](https://img.kancloud.cn/c9/18/c918a7103bd5875643ee08b7d0319e30_1707x727.png)
- Laravel5.5总结
- 项目管理
- Manager
- Vip专属链接管理
- Api
- Vip专属链接管理(Api)
- php artisan route:list 路由显示不全
- 数据迁移和填充
- Laravel5.5事件监听机制(注册-监听-任务调度)
- 章节1:未启用任务调度
- 章节2:启用任务调度
- 使用记录
- 数据迁移使用记录
- 安装laravel5.5日志观察器
- Laravel5.5消息队列(rabbitmq)
- 1:laravel自带消息队列
- 2:RabbitMq队列使用
- 第三方支付扩展:yansongda/laravel-pay
- 安装指引
- 控制器内使用
- 分表查询(mysql+mongo)
- 前端Vue按钮导出问题