ihor/supervisor-xml-rpc

PHP 简单的 Supervisor XML RPC 客户端 (http://supervisord.org)

0.2.1 2019-05-03 09:44 UTC

This package is auto-updated.

Last update: 2024-08-29 04:45:26 UTC


README

PHP XML RPC 客户端,用于 Supervisor

安装

在您的 composer.json 文件中定义以下需求

"require": {
    "ihor/supervisor-xml-rpc": "~0.2"
}

它还需要 PHP XML-RPC 扩展。版本标记为 dev,因为我还没有收到其他用户的反馈。

用法

// Create Supervisor API instance
$api = new \Supervisor\Api('127.0.0.1', 9001 /* username, password */);

// Call Supervisor API
$api->getApiVersion();

// That's all!

参考

getApiVersion()

返回 supervisord 所使用的 RPC API 的版本

此 API 与 Supervisor 本身独立版本化。由 getAPIVersion 返回的 API 版本仅在 API 变更时更改。其目的是帮助客户端识别它与哪个版本的 Supervisor API 进行通信。

在编写与该 API 通信的软件时,强烈建议您在调用方法之前首先测试 API 版本以检查兼容性。

getAPIVersion

getSupervisorVersion()

返回 supervisord 使用的 supervisor 包的版本

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.getSupervisorVersion

getIdentification()

返回 supervisord 的标识字符串

此方法允许客户端在可能运行多个 Supervisors 的环境中识别它与哪个 Supervisor 实例进行通信。

标识是一个必须在 Supervisor 的配置文件中设置的字符串。此方法简单地返回该值给客户端。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.getIdentification

getState()

返回 supervisord 的当前状态,作为结构体

这是 Supervisor 维护的内部值,它决定了 Supervisor 认为其当前的操作状态。

某些方法调用可以更改 Supervisor 的当前状态。例如,当站点处于 RUNNING 状态时调用 supervisor.shutdown() 方法将 Supervisor 放入 SHUTDOWN 状态,并在关闭过程中处于该状态。

supervisor.getState() 方法提供了客户端检查 Supervisor 状态的手段,无论是为了信息目的还是为了确保它打算调用的方法将被允许。

返回值是结构体

可能的返回值包括

FATAL 状态报告不可恢复的错误,例如 Supervisor 内部的错误或系统失控条件。一旦设置为 FATAL,Supervisor 就无法在没有重启的情况下返回到任何其他状态。

在 FATAL 状态下,除 supervisor.shutdown() 和 supervisor.restart() 外的所有未来方法都将自动失败而不会调用,并引发 FATAL_STATE 错误。

在 SHUTDOWN 或 RESTARTING 状态下,所有方法调用都被忽略,它们的可能返回值是未定义的。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.getState

getPid()

返回 supervisord 的 PID

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.getPID

readLog($offset, $length)

从偏移量开始读取长度字节的日志

它可以返回整个日志、日志尾部的字符数或由偏移量和长度参数指定的日志片段

如果日志为空且请求整个日志,则返回空字符串。如果偏移量或长度超出范围,将返回错误码BAD_ARGUMENTS。如果无法读取日志,此方法将抛出NO_FILE错误(如果文件不存在)或FAILED错误(如果遇到任何其他问题)。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.readLog

clearLog()

清除主日志

如果由于日志文件不存在而无法清除日志,将引发NO_FILE错误。如果由于其他原因无法清除日志,将引发FAILED错误。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.clearLog

shutdown()

关闭supervisor进程

此方法关闭Supervisor守护进程。如果有任何进程正在运行,它们将无警告地自动终止。与大多数其他方法不同,如果Supervisor处于FATAL状态,此方法仍然可以执行。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.shutdown

restart()

重启supervisor进程

此方法软重启Supervisor守护进程。如果有任何进程正在运行,它们将无警告地自动终止。请注意,实际的UNIX进程不能重启;只有Supervisor的主程序循环可以重启。这具有重置Supervisor内部状态的效果。

与大多数其他方法不同,如果Supervisor处于FATAL状态,此方法仍然可以执行。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.restart

getProcessInfo($name)

返回名为name的进程的信息

返回值是结构体

{'name':           'process name',
 'group':          'group name',
 'description':    'pid 18806, uptime 0:03:12'
 'start':          1200361776,
 'stop':           0,
 'now':            1200361812,
 'state':          1,
 'statename':      'RUNNING',
 'spawnerr':       '',
 'exitstatus':     0,
 'logfile':        '/path/to/stdout-log', # deprecated, b/c only
 'stdout_logfile': '/path/to/stdout-log',
 'stderr_logfile': '/path/to/stderr-log',
 'pid':            1}

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.getProcessInfo

getAllProcessInfo()

返回所有进程的信息

每个元素包含一个结构,这个结构包含与getProcess返回的结构体完全相同的元素。如果进程表为空,则返回空数组。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.getAllProcessInfo

startProcess($name, $wait = true)

启动一个进程

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.startProcess

stopProcess($name, $wait = true)

停止名为name的进程

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.stopProcess

startProcessGroup($name, $wait = true)

启动名为name的组中的所有进程

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.startProcessGroup

stopProcessGroup($name, $wait = true)

停止名为name的进程组中的所有进程

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.stopProcessGroup

startAllProcesses($wait = true)

启动配置文件中列出的所有进程

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.startAllProcesses

stopAllProcesses($wait = true)

停止进程列表中的所有进程

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.stopAllProcesses

sendProcessStdin($name, $chars)

向名为name的进程的stdin发送字符串chars。

如果发送非7位数据(Unicode),则在发送到进程的stdin之前将其编码为utf-8。如果chars不是一个字符串或不是Unicode,则引发INCORRECT_PARAMETERS。如果进程没有运行,则引发NOT_RUNNING。如果进程的stdin无法接受输入(例如,被子进程关闭),则引发NO_FILE。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.sendProcessStdin

sendRemoteCommEvent($type, $data)

发送一个事件,该事件将被订阅RemoteCommunicationEvent的事件监听器子进程接收。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.sendRemoteCommEvent

addProcessGroup($name)

从配置文件更新运行中进程的配置。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.addProcessGroup

removeProcessGroup($name)

从活动配置中删除已停止的进程。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.removeProcessGroup

readProcessStdoutLog($name, $offset, $length)

从名为name的stdout日志中从偏移量读取length个字节。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.readProcessStdoutLog

readProcessStderrLog($name, $offset, $length)

从偏移量开始读取名为name的stderr日志的长度字节数

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.tailProcessStderrLog

tailProcessStdoutLog($name, $offset, $length)

比readProcessStdoutLog()提供更高效的跟踪stdout日志的方法。使用readProcessStdoutLog()读取数据块,使用tailProcessStdoutLog()跟踪。

请求从偏移量开始,名为(name)的日志的长度字节数。如果总日志大小大于偏移量+长度,则设置溢出标志,并将偏移量自动增加以定位缓冲区到日志末尾。如果可用的字节数少于长度,则返回可用的最大字节数。(偏移量)返回的始终是日志中的最后一个偏移量+1。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.tailProcessStdoutLog

tailProcessStderrLog($name, $offset, $length)

比readProcessStderrLog()提供更高效的跟踪stderr日志的方法。使用readProcessStderrLog()读取数据块,使用tailProcessStderrLog()跟踪。

请求从偏移量开始,名为(name)的日志的长度字节数。如果总日志大小大于偏移量+长度,则设置溢出标志,并将偏移量自动增加以定位缓冲区到日志末尾。如果可用的字节数少于长度,则返回可用的最大字节数。(偏移量)返回的始终是日志中的最后一个偏移量+1。

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.tailProcessStderrLog

clearProcessLogs($name)

清除指定进程的stdout和stderr日志,并重新打开它们

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.clearProcessLogs

clearAllProcessLogs()

清除所有进程日志文件

http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.clearAllProcessLogs

listMethods()

返回一个数组,列出可用的方法名称

http://supervisord.org/api.html#supervisor.xmlrpc.SystemNamespaceRPCInterface.listMethods

methodHelp($name)

返回一个字符串,显示方法的文档

http://supervisord.org/api.html#supervisor.xmlrpc.SystemNamespaceRPCInterface.methodHelp

methodSignature($name)

返回一个数组,描述方法的签名,形式为[rtype, ptype, ptype...],其中rtype是方法的返回数据类型,而ptypes是方法接受的参数数据类型,按照方法参数顺序排列。

http://supervisord.org/api.html#supervisor.xmlrpc.SystemNamespaceRPCInterface.methodSignature

multicall(array $calls)

处理一个调用数组,并返回一个结果数组。调用应该是以下形式的struct。每个结果将是一个包含结果值的单元素数组,或者是一个以下形式的struct。这在您需要执行大量小型调用而无需大量往返时非常有用。

http://supervisord.org/api.html#supervisor.xmlrpc.SystemNamespaceRPCInterface.multicall