咱們在使用 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