supervisor

其他类别 2025-08-20

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):

$ 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
  • 所有贡献者

执照

麻省理工学院许可证(麻省理工学院)。请参阅许可证文件以获取更多信息。

下载源码

通过命令行克隆项目:

git clone https://github.com/supervisorphp/supervisor.git