一、安装libzookeeper

cd /usr/local/src/
wget http://mirror.bit.edu.cn/apache//zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
tar -xf zookeeper-3.4.5.tar.gz
cd zookeeper-3.4.5/src/c
./configure –prefix=/usr/local/zookeeper/zookeeper-3.4.5/
make && make install
二、安装php zookeeper扩展

cd /usr/local/src/
wget ‘http://pecl.php.net/get/zookeeper-0.2.2.tgz’
tar zxvf zookeeper-0.2.2.tgz
cd zookeeper-0.2.2
phpize
./configure –with-php-config=/usr/local/php/bin/php-config  –with-libzookeeper-dir=/usr/local/zookeeper/zookeeper-3.4.5/
make && make install
vim /usr/local/php/etc/php.ini
查找:extension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/”
添加:extension=zookeeper.so
三注意:php-config libzookeeper-di路径一定要正确

三、扩展的使用

    // 获取单条配置
     $path      = '/' . trim($path, '/');
     $zookeeper = new \Zookeeper('address:2181');
     if ($zookeeper->exists($path)) {
         $value = $zookeeper->get($path);
     }
    
     //创建节点
     if (!$zookeeper->exists($path)) {
         $zookeeper->create($path, $value, array(array(
             'perms' => 31, 
             'scheme' => 'world', 
             'id' => 'anyone'
         )));
     }
        
     //更新节点
     if ($zookeeper->exists($path)) {
          $zookeeper->set($path, $value);
     } 
    
     //删除一个节点
     if ($zookeeper->exists($path)) {
         $zookeeper->delete($path);
     }
   
     //获取所有子节点名称
     if ($zookeeper->exists($path)) {
         $value = $zookeeper->getChildren($path);
     } 
     
     //获取acl
     if ($zookeeper->exists($path)) {
         $zookeeper->getAcl($path);
     }
    
     //设置acl
     if ($zookeeper->exists($path)) {
         $acl     = $zookeeper->getAcl($path);
         $version = isset($acl['0']['aversion']) ? $acl['0']['aversion'] : 0;
         $zookeeper->setAcl($path, $version, array(array(
             'perms' => 31, 
             'scheme' => 'world', 
             'id' => 'anyone'
         )));
     } 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐