toflar / cronjob-supervisor
一个简单的进程管理器,可以通过分钟cronjob触发
2.0.1
2024-04-24 06:53 UTC
Requires
- php: ^8.1
- symfony/filesystem: ^6.0 || ^7.0
- symfony/lock: ^6.0 || ^7.0
- symfony/process: ^6.0 || ^7.0
Requires (Dev)
- phpunit/phpunit: ^10.2
- terminal42/contao-build-tools: @dev
README
需要在某些服务器上运行一定数量的工作进程,但没有访问任何类似supervisord的守护进程,但可以配置分钟cronjob?那么这个库可能对你很有帮助。
- 安装
composer require toflar/cronjob-supervisor
- 创建您的
runner.php
<?php require_once 'vendor/autoload.php'; use Symfony\Component\Process\Process; use Toflar\CronjobSupervisor\BasicCommand; use Toflar\CronjobSupervisor\Supervisor; $supervisor = Supervisor::withDefaultProviders('/some/directory/you/want/to/store/your/state'); $supervisor ->withCommand(new BasicCommand('sleep 10', 2, function () { return new Process(['sleep', '10']); })) ->withCommand(new BasicCommand('sleep 29', 4, function () { return new Process(['sleep', '29']); })) ->supervise() ;
- 配置分钟cronjob
* * * * * /path/to/your/php/binary/php runner.php
就是这样。Supervisor
将确保即使您的作业在一分钟后仍在运行,也只会创建最多数量的进程。
为了实现这一点,它使用多个提供程序来检查进程是否仍在运行。目前支持的有
posix_getpgid()
ps -p <pid>
tasklist /FI PID eq <pid>
这意味着您应该能够在大多数Linux和Windows组合上运行它。