zoukankan      html  css  js  c++  java
  • pm2 代替 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 简单

  • 相关阅读:
    一篇文章高效定位iframe
    URL与视图函数的映射
    include标签—引用文件路径
    UnitTest单元测试框架解析【实用篇】
    【案例演练】测试器与模板继承
    2招带你快速获取响应头与发送头
    dede网站如何更新地图sitemap.html
    申请微信小程序流程步骤
    phpstudy本地配置--dede织梦网
    stylus样式开发的使用----vue
  • 原文地址:https://www.cnblogs.com/sweetsunnyflower/p/11466349.html
Copyright © 2011-2022 走看看