前提

我们在使用 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 简单

pm2 代替 Supervisor 管理进程的更多相关文章

  1. Supervisor管理进程

    Supervisor管理进程 转载 2016年04月14日 18:26:45 标签: supervisord 28344 Supervisor重新加载配置启动新的进程 liaojie 发布于 1年前, ...

  2. Supervisor 管理进程,Cloud Insight 监控进程,完美!

    Supervisor 是由 Python 语言编写.基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等. Cloud Insight 是一款次世代 ...

  3. supervisor管理进程 superlance对进程状态报警

    supervisor介绍 首先,介绍一下supervisor.Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linu ...

  4. Linux服务:使用Supervisor管理进程

    一.简介 由于基本每个公司都会用到supervisor这个进程管理工具,这里简单阐述一下. Supervisor (http://supervisord.org) 是一个用Python写Linux下的 ...

  5. Django与supervisor 管理进程

    1.前言 在Django项目中,我们需要用到一些独立于Django框架外的脚本.这样一些脚本可能需要独立的持续运行,且具有很强的可维护性,这个时候supervisor就可以排上用场了. 基于pytho ...

  6. supervisor管理进程工具配置

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...

  7. 在Docker里使用(支持镜像继承的)supervisor管理进程(转)

    这篇文章是受 dockboard 之托帮忙翻译的与 docker 有关的技术文章.译自 Using Supervisor with Docker to manage processes (suppor ...

  8. php使用supervisor管理进程脚本

    supervisor是用python开发的一个在linux系统下的进程管理工具,可以方便的监听,启动,停止一个或多个进程.当一个进程被意外杀死后,supervisor监听到后,会自动重新拉起进程. 一 ...

  9. 使用 supervisor 管理进程

    安装: # yum install python-setuptools # easy_install supervisor 如果已经安装了epel和python-pip, 也可以简单 pip inst ...

随机推荐

  1. 第二章 Vue快速入门--14 使用v-model实现计算器的案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  2. ASP.netMVC验证码

    .复制下列代码,拷贝到控制器中. #region 生成验证码图片 // [OutputCache(Location = OutputCacheLocation.None, Duration = 0, ...

  3. postConstruct执行过程

    使用@PostConstruct注解修饰的方法会在服务器加载Servlet时运行,并且只会执行一次,在构造函数之后,在init方法之前执行: 执行的顺序一次是:构造函数-->autowired依 ...

  4. 返回vector指针

    #include<iostream> #include <vector> using namespace std; vector<int> *MyFind() { ...

  5. hadoop中的JournalNode

    1.在HADOOP扮演的角色 JournalNode是在MR2也就是Yarn中新加的,journalNode的作用是存放EditLog的, 在MR1中editlog是和fsimage存放在一起的然后S ...

  6. JVM(六),java内存模型

    六.java内存模型 1.线程独占部分 (1)程序计数器 (2)Java虚拟机栈 (3)本地方法栈 (4)递归为什么会引发java.lang.StackOverFlowError异常吗 2.线程共享部 ...

  7. angular打包(三):pkg

    希望打包成1个web服务,运行exe,启动 angular,供浏览器显示. 问题分析: 其实angular编译后,都是静态文件了.只需要打包express,让express可以以exe的形式运行就可以 ...

  8. Java的当中的泛型

    Java当中的泛型 01 import java.util.ArrayList; import java.util.List; public class Demo{ public static voi ...

  9. 两列布局实现各自独立滚屏,类似与 scrollNav 的功能。

    现在移动端 web 开发越来越靠近 app 的功能.所以两列布局各自都能实现独立滚动也常见.基于固定侧边栏导航,另一侧实现内容展示. 这个功能的核心在于使用 vh 单位. 其中 CSS 的代码是核心点 ...

  10. CF1228E Another Filling the Grid

    题目链接 问题分析 比较显见的容斥,新颖之处在于需要把横竖一起考虑-- 可以枚举没有\(1\)的行数和列数,答案就是 \[ \sum\limits_{i=0}^n\sum\limits_{j=0}^m ...