scorpse/supervisor

用于通过XML-RPC API管理Supervisor的PHP库

v4.0.2 2021-01-27 14:22 UTC

README

Latest Version Software License Test Suite Total Downloads

通过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客户端,但这并不是第一个。然而,一些作者决定弃用他们的包,以支持这个

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件