supervisor
通过XML-RPC API管理supervisor的PHP库。
安装
通过作曲家
supervisor \”>
composer require supervisor php/ supervisor
用法
该库取决于快速且功能强大的FXMLRPC库,该库支持许多适配器使用您首选的HTTP客户端进行连接。
在下面的示例中,我们将使用流行的Guzzle HTTP客户库库。
此示例需要一些其他库才能运行。要包括必要的额外组件,您可以运行:
composer require guzzlehttp/guzzle:^7.0
此示例显示了如何将身份验证凭据传递给Guzzle,启动FXMLRPC客户端并将其传递给supervisor PHP。
supervisor.sock\’,
],
]);
$client = new fXmlRpc\\Client(
\’http://*l*oca*lhost/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();\”>
// 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://local**h*ost/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 ();
例外处理
对于每个可能的故障响应,都有一个例外。这些异常扩展了一个常见的例外,因此您可以捕获特定的故障或全部。当从服务器返回未知故障时,如果抛出了常见异常,则实例。故障响应列表和适当的例外可以在课堂中找到。
supervisor $ supervisor */
try {
$ supervisor ->startProcess(\’process\’, true);
} catch (\\ supervisor \\Exception\\Fault\\BadNameException $e) {
// handle bad name error here
} catch (\\ supervisor \\Exception\\ supervisor Exception $e) {
// handle any other errors here
}\”>
/** @var \\ supervisor \\ supervisor $ supervisor */ try { $ supervisor -> startProcess ( \' process \' , true ); } catch ( \\ supervisor \\ Exception \\ Fault \\ BadNameException $ e ) { // handle bad name error here } catch ( \\ supervisor \\ Exception \\ supervisor Exception $ e ) { // handle any other errors here }
配置和事件侦听
配置和事件组件已移至自己的存储库中。
更多信息
您可以在此处找到supervisor XML-RPC文档:http://supervisord.org/api.html
注意
如果使用PHP XML-RPC扩展对解析响应(标记为实验)。当您尝试阅读/尾随过程时,这可能会导致问题。确保清洁日志消息。我发现的唯一信息是评论。
贡献
请有关详细信息,请参阅贡献。
测试
$ composer test
功能测试(Behat):
$ behat
Docker图像
该存储库带有Docker构成配置和Dockerfile,以便于测试。测试可以通过:
docker-compose run --rm ci
弃用的库
尽管这试图成为完整的supervisor客户端,但这不是第一个。但是,一些作者决定将其包裹弃用,以支持这一点:
- supervisor D PHP客户
- 靛蓝supervisor
学分
- LászlóMonda( supervisor D PHP客户的作者)
- MárkSági-Kazár
- 所有贡献者
执照
麻省理工学院许可证(麻省理工学院)。请参阅许可证文件以获取更多信息。
