supervisorphp / supervisor
通过XML-RPC API管理Supervisor的PHP库
5.1.0
2022-11-21 11:48 UTC
Requires
- php: >=8.1
- lstrojny/fxmlrpc: >=0.12
- psr/log: >=1
Requires (Dev)
- ext-pcntl: *
- ext-posix: *
- behat/behat: ^3.0
- guzzlehttp/guzzle: ^7
- php-http/httplug: ^2.1
- php-http/message: ^1.8
- php-parallel-lint/php-console-highlighter: ^1
- php-parallel-lint/php-parallel-lint: ^1.3
- phpspec/phpspec: ^7
- phpstan/phpstan: ^1
- phpstan/phpstan-strict-rules: ^1
- roave/security-advisories: dev-latest
- supervisorphp/configuration: ^0.3
This package is auto-updated.
Last update: 2024-09-03 19:50:48 UTC
README
通过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客户端,但这并不是第一个。然而,一些作者决定弃用他们的包以支持这个
致谢
- László Monda(Supervisord PHP客户端的作者)
- Márk Sági-Kazár
- 所有贡献者
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。