您好,欢迎访问一九零五行业门户网

用 PHP 监听 ZooKeeper

代码出处:https://git.oschina.net/afrxprojs/xgame-code_server zookeeper ?php//// 首先, 执行 zkcli.sh 进入 zookeeper 命令行工具界面,// 在命令行中可以执行以下操作 ://// 新建 kev/value// $ create /xgame 0// $ create /xgame/s00 0// $ create /xg
代码出处:https://git.oschina.net/afrxprojs/xgame-code_server zookeeper _appname; $servername = $this->_servername; // 初始化路径字典 $this->_zkpathmap = array( /${appname}/${servername}/conf/maintenancetimestr => updatemaintenancetime, /${appname}/${servername}/conf/whitelist => updatewhitelist, /${appname}/${servername}/conf/blacklist => updateblacklist, ); foreach ($this->_zkpathmap as $key => $val) { // 输出调试日志 mylog::log()->debug(准备监听 : $key); // 设置监听 $this->get($key, array($this, watch)); } } /** * 监听数据变化 * * @param $eventtype * @param $eventstate * @param $eventkey * */ public function watch($eventtype, $eventstate, $eventkey) { // 记录日志信息 mylog::log()->info(接到数据); // 输出调试信息 mylog::log()->debug(eventtype = ${eventtype}, eventstate = ${eventstate}, eventkey = ${eventkey}); // 获取数据 $data = $this->get($eventkey); // 获取函数引用并调用 $funcref = $this->_zkpathmap[$eventkey]; $this->$funcref($data); // 循环监听 $this->get($eventkey, array($this, watch)); } /** * 更新停服维护时间, * 注意这是一个回调函数! 会在 watch 函数中被间接调用 * * @param string $value * @return void * */ private function updatemaintenancetime($value) { // 记录日志信息 mylog::log()->info(维护时间 = $value); // 获取 json 数组 $jsonarr = json_decode($value); $starttimestr = $jsonarr[0]; $endtimestr = $jsonarr[1]; $text = <<< __eofinfo(白名单 = ${value}); // 获取 json 数组 $jsonarr = json_decode($value); $text = <_appname = $appname;$servobj->_servername = $servername;// 启动服务$servobj->startup();while (true) { mylog::log()->info(live); sleep(60);}
其它类似信息

推荐信息