前提

我们在使用 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. js 深浅拷贝 笔记总结

    一.js 数据类型 javaScritp的数据类型有:数值类型.字符串类型.布尔类型.null.undefined.对象(数组.正则表达式.日期.函数),大致分成两种:基本数据类型和引用数据类型, 其 ...

  2. x86和x64下指针的大小

    根据测试 int main() { ; )); )); int n1 = sizeof(a); int n2 = sizeof(p); // int n3 = sizeof(*p); error in ...

  3. Dom修改元素样式

    提纲:我们可以通过js来修改元素的大小,颜色,位置等样式 1.element.style                         行内样式的操作 2.element.className    ...

  4. python3安装模块,摘自网上

    配置好Python3.6和pip3安装EPEL和IUS软件源 yum install epel-release -y yum install https://centos7.iuscommunity. ...

  5. docker及k8s安装consul

    一.docker部署consul集群 参考文献:https://www.cnblogs.com/lonelyxmas/p/10880717.html https://blog.csdn.net/qq_ ...

  6. 四 java web考点

    一.GET和POST区别(参考Servlet&JSP学习笔记) <form>中method属性默认为GET. 1.使用POST的情况 GET跟随URL之后,请求参数长度有限,过长的 ...

  7. BFC的理解

    一.BFC概念 BFC即Block Formatting Contexts(块级格式化上下文),它属于普通流.它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其他子元素将如何定位,以及和其他元素 ...

  8. [Python之路] 日志操作

    使用logging模块来写日志 日志直接输出到准备输出 import logging logging.basicConfig(level=logging.WARNING, format="% ...

  9. PHP:函数和语言结构(转)

    转自:https://www.cnblogs.com/fanqiechaodan/articles/5222366.html 什么是语言结构呢?它和函数有什么不同吗? 1.  什么是语言结构和函数 语 ...

  10. html5文件夹上传下载组件

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...