toflar/cronjob-supervisor

一个简单的进程管理器,可以通过分钟cronjob触发

2.0.1 2024-04-24 06:53 UTC

This package is auto-updated.

Last update: 2024-08-24 07:41:46 UTC


README

需要在某些服务器上运行一定数量的工作进程,但没有访问任何类似supervisord的守护进程,但可以配置分钟cronjob?那么这个库可能对你很有帮助。

  1. 安装

composer require toflar/cronjob-supervisor

  1. 创建您的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()
;
  1. 配置分钟cronjob

* * * * * /path/to/your/php/binary/php runner.php

就是这样。Supervisor将确保即使您的作业在一分钟后仍在运行,也只会创建最多数量的进程。

为了实现这一点,它使用多个提供程序来检查进程是否仍在运行。目前支持的有

  • posix_getpgid()
  • ps -p <pid>
  • tasklist /FI PID eq <pid>

这意味着您应该能够在大多数Linux和Windows组合上运行它。