supervisor
Version 5.0
用于通过 XML-RPC API 管理supervisor的 PHP 库。
通过作曲家
composer require supervisor php/ supervisor
该库依赖于快速且强大的 fXmlRpc 库,该库支持许多适配器以使用您首选的 HTTP 客户端进行连接。
在下面的示例中,我们将使用流行的 Guzzle HTTP 客户端库。
此示例需要一些额外的库才能运行。要包含必要的额外组件,您可以运行:
composer require guzzlehttp/guzzle:^7.0
此示例演示如何将身份验证凭据传递给 Guzzle、启动 fXmlRpc 客户端并将其传递给supervisor PHP。
// 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 supervisor Exception $ e ) {
// handle any other errors here
}
配置和事件组件已移至其自己的存储库中。
您可以在此处找到supervisor XML-RPC 文档:http://supervisord.org/api.html
如果您使用 PHP XML-RPC 扩展来解析响应(标记为EXPERIMENTAL )。当您尝试读取进程的尾部日志时,这可能会导致问题。确保清理日志消息。我找到的关于此的唯一信息是评论。
详细信息请参阅贡献。
$ composer test
功能测试(行为):
$ behat
该存储库附带了 Docker Compose 配置和 Dockerfile,以便于测试。测试可以通过以下方式运行:
docker-compose run --rm ci
虽然这试图成为一个完整的supervisor客户端,但这并不是第一个。然而,一些作者决定弃用他们的软件包,转而采用以下方式:
麻省理工学院许可证 (MIT)。请参阅许可证文件以获取更多信息。