gpt4 book ai didi

php - 有什么方法可以访问 Gearman 管理?

转载 作者:IT王子 更新时间:2023-10-29 01:23:43 28 4
gpt4 key购买 nike

我希望能够查询 gearman 服务器以确定我运行了多少个 worker 实例(基本上我想确保 RunTaskA 可用并且 RunTaskB 如果没有工作人员处理这些任务,则可用,我希望能够发出警报。

有什么办法吗?

此外:如果您知道查询 gearman 服务器的 PHP 方法,那就太疯狂了。

编辑:我知道 native 可用的 PHP gearman 扩展,但我不是在寻找任务提交扩展,我需要一些允许我查询 gearman 服务器并查看有多少的东西 worker 正在执行特定任务。

最佳答案

class Waps_Gearman_Server {

/**
* @var string
*/
protected $host = "127.0.0.1";
/**
* @var int
*/
protected $port = 4730;

/**
* @param string $host
* @param int $port
*/
public function __construct($host=null,$port=null){
if( !is_null($host) ){
$this->host = $host;
}
if( !is_null($port) ){
$this->port = $port;
}
}

/**
* @return array | null
*/
public function getStatus(){
$status = null;
$handle = fsockopen($this->host,$this->port,$errorNumber,$errorString,30);
if($handle!=null){
fwrite($handle,"status\n");
while (!feof($handle)) {
$line = fgets($handle, 4096);
if( $line==".\n"){
break;
}
if( preg_match("~^(.*)[ \t](\d+)[ \t](\d+)[ \t](\d+)~",$line,$matches) ){
$function = $matches[1];
$status['operations'][$function] = array(
'function' => $function,
'total' => $matches[2],
'running' => $matches[3],
'connectedWorkers' => $matches[4],
);
}
}
fwrite($handle,"workers\n");
while (!feof($handle)) {
$line = fgets($handle, 4096);
if( $line==".\n"){
break;
}
// FD IP-ADDRESS CLIENT-ID : FUNCTION
if( preg_match("~^(\d+)[ \t](.*?)[ \t](.*?) : ?(.*)~",$line,$matches) ){
$fd = $matches[1];
$status['connections'][$fd] = array(
'fd' => $fd,
'ip' => $matches[2],
'id' => $matches[3],
'function' => $matches[4],
);
}
}
fclose($handle);
}

return $status;
}

}

关于php - 有什么方法可以访问 Gearman 管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2752431/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com