verdient / pm2
pm2 process manager bridge
0.0.2
2020-04-11 09:16 UTC
Requires
- php: >=7.0.0
- verdient/chorus: ~0.0.6
This package is not auto-updated.
Last update: 2024-11-17 07:42:50 UTC
README
通过PHP控制PM2进程管理器
安装
composer require verdient/pm2
配置脚本
use Verdient\pm2\PM2; /** * 是否允许合并操作 * 对于支持合并的操作,如果设置为true,则会对进程进行批量操作 * 否则会依次对各个进程进行操作 * 可选参数,默认为true */ $enableMerge = true; /** * 是否跳过环境检查 * 对于确定安装了PM2的系统,将该配置项设置为true,跳过环境检查 * 否则每次运行都会检查PM2的安装状态 * 可选参数,默认为false */ $skipEnvironmentCheck = false; /** * 脚本配置,格式为[$name => $config]的数组 * $config 可以为字符串也可以为数组 * 当$config为数组时,等同于仅配置了数组的$config['script'] * 当$config为数组时: * script 运行的脚本,与cwd一起组成完成的脚本路径 * cwd 脚本运行的文件夹 * args 需要传递给脚本的参数,默认为空数组 * interpreter 解释脚本的程序,默认为php * interpreter_args 需要传递给解释程序(interpreter)的参数 * 程序以$name作为唯一标识,所以$name不允许重复 */ $scripts = [ 'test' => [ 'script' => 'index.php', 'cwd' => __DIR__, 'args' => [], 'interpreter' => 'php', 'interpreter_args' => [] ], 'test2' => __DIR__ . DIRECTORY_SEPARATOR . 'index.php', ]; $pm2 = new PM2([ 'scripts ' => $scripts, 'skipEnvironmentCheck' => $skipEnvironmentCheck, 'enableMerge' => $enableMerge ] ]);
启动脚本
/** * 要操作的脚本名称 * 默认为空数组,既操作所有配置的脚本 * stop restart delete reset方法$names参数含义与此相同 */ $names = []; /** * 附加的参数 * 具体参数见 https://pm2.keymetrics.io/docs/usage/startup/ */ $args = []; $pm2->start($names, $args);
停止脚本
$pm2->stop($names = []);
重启脚本
$pm2->restart($names = []);
重置脚本
$pm2->reset($names = []);
删除脚本
$pm2->delete($names = []);
事件挂载
如果需要对操作的过程进行观察监控,可以通过挂载事件来实现
$pm2->on(PM2::EVENT_START, function($started, $count, $names){ echo '已启动' . $started . '个进程,共需启动' . $count . '个进程,名字分别为:' . implode(', ', $names) . PHP_EOL; }); $pm2->on(PM2::EVENT_STOP, function($started, $count, $names){ echo '已停止' . $started . '个进程,共需停止' . $count . '个进程,名字分别为:' . implode(', ', $names) . PHP_EOL; }); $pm2->on(PM2::EVENT_RESTART, function($started, $count, $names){ echo '已重启' . $started . '个进程,共需重启' . $count . '个进程,名字分别为:' . implode(', ', $names) . PHP_EOL; }); $pm2->on(PM2::EVENT_RESET, function($started, $count, $names){ echo '已重置' . $started . '个进程,共需重置' . $count . '个进程,名字分别为:' . implode(', ', $names) . PHP_EOL; }); $pm2->on(PM2::EVENT_DELETE, function($started, $count, $names){ echo '已删除' . $started . '个进程,共需删除' . $count . '个进程,名字分别为:' . implode(', ', $names) . PHP_EOL; });