企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **章节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)