## **章節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數據填充
- laravel9子查詢