一个替代 Supervisor 且更加友好的进程监控器

前提

我们在使用 Laravel 的时候不免用到列队来处理任务,而 Laravel 官方文档给出的是 Supervisor 来管理进程和监控。
但是我们在使用中有下面几个缺点:

  • Supervisor 单日志
  • 配置过于复杂
  • 无法预配设置

pm2

pm2 这个工具我想做前端,尤其是做过 SSR 的都不陌生,我们需要使用 pm2 工具让进程常驻运行与自动重启这类功能。

但是我们知道 pm2 是 node 下工具,能否用于其他语言呢?其实是可以的,我们都说了嘛,pm2 就是一个工具,一个用 js 开发的工具而已。既然是工具,当然能用到其他地方去。

安装

laravel 下本身就有一个 package.json 文件。反正也要用到 node,如果你和我一样有强迫症,就依赖到项目中。如果没有,则可以全局安装:

依赖到项目

npm i pm2
// or
yarn add pm2

依赖到全局

npm -g i pm2
// or
yarn add --global pm2

预先配置

我们在项目中建立一个 YAML 的进程配置文件,暂且命名为 process.yml

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 文件路径

package scripts 配置

我们为了方便在项目中启动,我们配置几个命令:

"scripts": {
    "queue:start": "npm run queue:remove && pm2 start process.yml",
    "queue:remove": "pm2 delete process.yml"
}

启动

现在我们运行下面的命令就可以了:

npm run queue:start
// or
yarn queue:start

其实使用 pm2 最大的好处就是因为这玩意比 Supervisor 简单,?

本作品采用《CC 协议》,转载必须注明作者和本文链接
Seven 的代码太渣,欢迎关注我的新拓展包 medz/cors 解决 PHP 项目程序设置跨域需求。
附言 1  ·  4年前

有朋友问我,如何重启进程呢?
很简单,使用

php artisan queue:restart

即可,pm2 会自动重启

本帖由系统于 4年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 17
Toiu

插眼

4年前 评论
a_bing

mark

4年前 评论
不温柔

Supervisor可以通过配置文件的方式来设置配置

4年前 评论
medz (楼主) 4年前

没看出什么特别的优势,记得pm2跑nodejs倒是能在进程崩溃时自动重启.

4年前 评论
medz (楼主) 4年前

正在使用pm2,本身不局限node.js脚本、php脚本, 还是别的脚本什么的

4年前 评论

感觉对做前端的人超级友好

4年前 评论
mengdodo

Supervisor启用php项目多进程很方便,pm2好像不行

3年前 评论
mengdodo (作者) 3年前
terranc 3年前
terranc 3年前

修改了process.yml,然后artisan queue:restart没生效

3年前 评论

这玩意最大的好处是Windows平台可以用。Supervisor 只能在linux。

2年前 评论
fanshi__ 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
创始人 @ Odore Inc.
文章
33
粉丝
202
喜欢
532
收藏
198
排名:23
访问:24.7 万
私信
所有博文
社区赞助商