scorpse / supervisor
用于通过XML-RPC API管理Supervisor的PHP库
v4.0.2
2021-01-27 14:22 UTC
Requires
- php: >=7.4
- lstrojny/fxmlrpc: >=0.12
- psr/log: ^1.1
Requires (Dev)
- ext-pcntl: *
- ext-posix: *
- behat/behat: ^3.0
- guzzlehttp/guzzle: ^6.0
- http-interop/http-factory-guzzle: ^1.0
- overtrue/phplint: ^2.0
- php-http/guzzle6-adapter: ^2.0
- php-http/httplug: ^2.1
- php-http/message: ^1.8
- phpspec/phpspec: ^6.2
- phpstan/phpstan: ^0.12.32
- phpstan/phpstan-strict-rules: ^0.12.2
- supervisorphp/configuration: ^0.2
This package is auto-updated.
Last update: 2024-09-27 22:47:01 UTC
README
通过XML-RPC API管理Supervisor的PHP库。
安装
通过Composer
composer require supervisorphp/supervisor
用法
此库依赖于快速且强大的fXmlRpc库,该库支持多个适配器,以便使用您首选的HTTP客户端建立连接。
以下示例中,我们将使用流行的Guzzle HTTP客户端库。
此示例需要一些额外的库才能运行。要包含必要的额外组件,您可以运行
composer require guzzlehttp/guzzle:^6.0 php-http/guzzle6-adapter http-interop/http-factory-guzzle php-http/httplug php-http/message
此示例展示了如何将认证凭据传递给Guzzle,初始化fXmlRpc客户端,并将其传递给SupervisorPHP。
// Create Guzzle 6 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\HttpAdapterTransport( new \Http\Message\MessageFactory\GuzzleMessageFactory(), new \Http\Adapter\Guzzle6\Client($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)。有关更多信息,请参阅许可文件。