English | 简体中文 | 繁體中文
查询

Zookeeper::setWatcher()函数—用法及示例

「 设置一个回调函数,当指定的节点发生变化时会触发该回调函数 」


函数名称:Zookeeper::setWatcher()

适用版本:PHP 5 >= 5.3.0, PHP 7

函数说明:Zookeeper::setWatcher() 方法用于设置一个回调函数,当指定的节点发生变化时会触发该回调函数。

用法:

bool Zookeeper::setWatcher(string $path, callable $watcher_cb): bool

参数:

  • $path:需要监视的节点的路径。
  • $watcher_cb:一个回调函数,当指定节点发生变化时会被调用。该回调函数有三个参数:$event_type表示事件类型,$stat表示节点的状态信息,$path表示发生变化的节点路径。

返回值:

  • 成功时,返回true。
  • 失败时,返回false。

示例:

$zookeeper = new Zookeeper('localhost:2181');
$path = '/my_node';

// 创建一个回调函数
function watcherCallback($event_type, $stat, $path) {
    echo "Node $path has changed!";
    echo "Event type: $event_type";
    echo "Node stat: " . var_export($stat, true);
}

// 设置监视器
$zookeeper->setWatcher($path, 'watcherCallback');

// 模拟节点变化
$zookeeper->set($path, 'new_data');

// 在此处等待一段时间,以便触发回调函数

// 输出:
// Node /my_node has changed!
// Event type: 3
// Node stat: array (
//   'ctime' => 1632362115,
//   'mtime' => 1632362120,
//   'version' => 1,
//   'cversion' => 0,
//   'aversion' => 0,
//   'ephemeralOwner' => 0,
//   'dataLength' => 8,
//   'numChildren' => 0,
//   'pzxid' => 3,
// )

注意事项:

  • 在设置监视器之前,需要先创建一个Zookeeper实例,并通过连接字符串连接到ZooKeeper服务器。
  • 回调函数必须是一个可调用的函数,可以是普通函数、匿名函数或类方法。
  • 回调函数的参数顺序必须与示例中的顺序一致,即$event_type$stat$path
  • 当指定节点发生变化时,回调函数会被异步调用,因此需要在合适的位置等待一段时间以触发回调函数的执行。
补充纠错
上一个函数: Zookeeper::__construct()函数
下一个函数: Zookeeper::setLogStream()函数
热门PHP函数
分享链接