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 fXmlRpcClient(
'http://*l*oca*lhost/RPC2',
new fXmlRpcTransportPsrTransport(
new GuzzleHttpPsr7HttpFactory(),
$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 ExceptionFaultBadNameException $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):
$ behatDocker图像
该存储库带有Docker构成配置和Dockerfile,以便于测试。测试可以通过:
docker-compose run --rm ci弃用的库
尽管这试图成为完整的supervisor客户端,但这不是第一个。但是,一些作者决定将其包裹弃用,以支持这一点:
- supervisor D PHP客户
- 靛蓝supervisor
学分
- LászlóMonda( supervisor D PHP客户的作者)
- MárkSági-Kazár
- 所有贡献者
执照
麻省理工学院许可证(麻省理工学院)。请参阅许可证文件以获取更多信息。
下载源码
通过命令行克隆项目:
git clone https://github.com/supervisorphp/supervisor.git