supervisorphp/supervisor

通过XML-RPC API管理Supervisor的PHP库

5.1.0 2022-11-21 11:48 UTC

README

Latest Version Software License Test Suite Total Downloads

通过XML-RPC API管理Supervisor的PHP库。

安装

通过Composer

composer require supervisorphp/supervisor

用法

此库依赖于快速且强大的fXmlRpc库,它支持多个适配器,以便您可以使用首选的HTTP客户端建立连接。

以下示例将使用流行的Guzzle HTTP客户端库。

此示例需要一些额外的库才能运行。要包含必要的额外组件,您可以使用以下命令:

composer require guzzlehttp/guzzle:^7.0

此示例展示了如何将认证凭据传递给Guzzle,初始化fXmlRpc客户端,并将其传递给SupervisorPHP。

// Create Guzzle HTTP client
$guzzleClient = new \GuzzleHttp\Client([
    'auth' => ['user', '123'],
]);

// Pass the url and the guzzle client to the fXmlRpc Client
$client = new fXmlRpc\Client(
    'http://127.0.0.1:9001/RPC2',
    new fXmlRpc\Transport\PsrTransport(
        new GuzzleHttp\Psr7\HttpFactory(),
        $guzzleClient
    )
);

// Or, if connecting via a Unix Domain Socket
$guzzleClient = new \GuzzleHttp\Client([
    'curl' => [
        \CURLOPT_UNIX_SOCKET_PATH => '/var/run/supervisor.sock',
    ],
]);

$client = new fXmlRpc\Client(
    'http://localhost/RPC2',
    new fXmlRpc\Transport\PsrTransport(
        new GuzzleHttp\Psr7\HttpFactory(),
        $guzzleClient
    )
);

// Pass the client to the Supervisor library.
$supervisor = new Supervisor\Supervisor($client);

// returns Process object
$process = $supervisor->getProcess('test_process');

// returns array of process info
$supervisor->getProcessInfo('test_process');

// same as $supervisor->stopProcess($process);
$supervisor->stopProcess('test_process');

// Don't wait for process start, return immediately
$supervisor->startProcess($process, false);

// returns true if running
// same as $process->checkState(Process::RUNNING);
$process->isRunning();

// returns process name
echo $process;

// returns process information
$process->getPayload();

异常处理

对于每个可能的故障响应都有一个异常。这些异常扩展了通用异常,因此您可以选择捕获特定的故障或全部。当服务器返回未知故障时,会抛出一个通用异常实例。故障响应列表和相应的异常可以在类中找到。

/** @var \Supervisor\Supervisor $supervisor */

try {
	$supervisor->startProcess('process', true);
} catch (\Supervisor\Exception\Fault\BadNameException $e) {
	// handle bad name error here
} catch (\Supervisor\Exception\SupervisorException $e) {
	// handle any other errors here
}

配置和事件监听

配置事件组件已移动到它们自己的存储库中。

更多信息

您可以在以下位置找到Supervisor XML-RPC文档:http://supervisord.org/api.html

注意

如果您使用PHP XML-RPC扩展来解析响应(标记为实验性)。在尝试读取/跟踪进程日志时,这可能会导致问题。请确保清理您的日志消息。我找到的唯一相关信息是注释

贡献

有关详细信息,请参阅CONTRIBUTING

测试

$ composer test

功能测试(behat)

$ behat

Docker镜像

此存储库包含Docker Compose配置和Dockerfile,以便轻松测试。可以通过以下命令运行测试:

docker-compose run --rm ci

已弃用的库

虽然这试图成为一个完整的Supervisor客户端,但这并不是第一个。然而,一些作者决定弃用他们的包以支持这个

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件