## **章节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)文件,如图所示:

```
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(监听器目录)

2. 在 app/Providers/EventServiceProvider.php 文件中编写要执行的事件和事件对应的监听器,如图所示

3. 按照上述操作,编写 Tests2MongoEvent 事件 和 Tests2MongoListener 事件监听器,如图所示
Tests2MongoEvent.php



Tests2MongoListener.php


Tests2MongoModel.php


Name.php

4. 开始使用事件,使用操作如下


5. 显示结果如下


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



注意:命令:`php artisan queue:work`,只执行默认的消息队列,如果需要配置,配置如下:
.env.production 配置如下:

/config/queue.php 配置如下:

进入容器内,先执行更新缓存命令:php artisan config:cache ,再执行:php artisan queue:work


- 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按钮导出问题
- 单元测试
- 模型使用
- laravel9数据填充