咱们在使用 Laravel 的时候难免用到列队来处理任务,而 Laravel 官方文档给出的是 Supervisor 来管理进程和监控。
可是咱们在使用中有下面几个缺点:php
pm2 这个工具我想作前端,尤为是作过 SSR 的都不陌生,咱们须要使用 pm2 工具让进程常驻运行与自动重启这类功能。前端
可是咱们知道 pm2 是 node 下工具,可否用于其余语言呢?实际上是能够的,咱们都说了嘛,pm2 就是一个工具,一个用 js 开发的工具而已。既然是工具,固然能用到其余地方去。node
laravel 下自己就有一个 package.json 文件。反正也要用到 node,若是你和我同样有强迫症,就依赖到项目中。若是没有,则能够全局安装:laravel
npm i pm2 // or yarn add pm2
npm -g i pm2 // or yarn add --global pm2
咱们在项目中创建一个 YAML 的进程配置文件,暂且命名为 process.yml
:npm
apps:
- name: "laravel:queue:work" # 这里本身命名
script: artisan // 指定脚本为 artisan 脚本
watch: false // 不监听文件变化
interpreter: php // 脚本为php,若是你的 php 不在全局变量能够指定绝对路径脚本
args: "queue:work --tries=3" // artisan 命令和参数 restart_delay: 3000 // 进程中断三秒后重启 error_file: ./storage/logs/queue.error.log // 错误日志 out_file: ./storage/logs/queue.out.log // 输出日志 pid_file: ./storage/app/queue.pid // pid 文件路径
咱们为了方便在项目中启动,咱们配置几个命令:json
"scripts": { "queue:start": "npm run queue:remove && pm2 start process.yml", "queue:remove": "pm2 delete process.yml" }
如今咱们运行下面的命令就能够了:bash
npm run queue:start // or yarn queue:start
其实使用 pm2 最大的好处就是由于这玩意比 Supervisor 简单app