ZooKeeper

目录

简介

Represents ZooKeeper session.

类摘要

Zookeeper

class Zookeeper {

/* 方法 */

public __construct ([ string $host = '' [, callable $watcher_cb = NULL [, int $recv_timeout = 10000 ]]] )

public bool addAuth ( string $scheme , string $cert [, callable $completion_cb = NULL ] )

public void close ( void )

public void connect ( string $host [, callable $watcher_cb = NULL [, int $recv_timeout = 10000 ]] )

public string create ( string $path , string $value , array $acls [, int $flags = NULL ] )

public bool delete ( string $path [, int $version = -1 ] )

public array exists ( string $path [, callable $watcher_cb = NULL ] )

public string get ( string $path [, callable $watcher_cb = NULL [, array &$stat = NULL [, int $max_size = 0 ]]] )

public array getAcl ( string $path )

public array getChildren ( string $path [, callable $watcher_cb = NULL ] )

public int getClientId ( void )

public ZookeeperConfig getConfig ( void )

public int getRecvTimeout ( void )

public int getState ( void )

public bool isRecoverable ( void )

public bool set ( string $path , string $value [, int $version = -1 [, array &$stat = NULL ]] )

public bool setAcl ( string $path , int $version , array $acl )

public static bool setDebugLevel ( int $logLevel )

public static bool setDeterministicConnOrder ( bool $yesOrNo )

public bool setLogStream ( resource $stream )

public bool setWatcher ( callable $watcher_cb )

/* 常量 */

const integer PERM_READ = 1 ;

const integer PERM_WRITE = 2 ;

const integer PERM_CREATE = 4 ;

const integer PERM_DELETE = 8 ;

const integer PERM_ADMIN = 16 ;

const integer PERM_ALL = 31 ;

const integer EPHEMERAL = 1 ;

const integer SEQUENCE = 2 ;

const integer LOG_LEVEL_ERROR = 1 ;

const integer LOG_LEVEL_WARN = 2 ;

const integer LOG_LEVEL_INFO = 3 ;

const integer LOG_LEVEL_DEBUG = 4 ;

const integer EXPIRED_SESSION_STATE = -112 ;

const integer AUTH_FAILED_STATE = -113 ;

const integer CONNECTING_STATE = 1 ;

const integer ASSOCIATING_STATE = 2 ;

const integer CONNECTED_STATE = 3 ;

const integer READONLY_STATE = 5 ;

const integer NOTCONNECTED_STATE = 999 ;

const integer CREATED_EVENT = 1 ;

const integer DELETED_EVENT = 2 ;

const integer CHANGED_EVENT = 3 ;

const integer CHILD_EVENT = 4 ;

const integer SESSION_EVENT = -1 ;

const integer NOTWATCHING_EVENT = -2 ;

const integer SYSTEMERROR = -1 ;

const integer RUNTIMEINCONSISTENCY = -2 ;

const integer DATAINCONSISTENCY = -3 ;

const integer CONNECTIONLOSS = -4 ;

const integer MARSHALLINGERROR = -5 ;

const integer UNIMPLEMENTED = -6 ;

const integer OPERATIONTIMEOUT = -7 ;

const integer BADARGUMENTS = -8 ;

const integer INVALIDSTATE = -9 ;

const integer NEWCONFIGNOQUORUM = -13 ;

const integer RECONFIGINPROGRESS = -14 ;

const integer OK = 0 ;

const integer APIERROR = -100 ;

const integer NONODE = -101 ;

const integer NOAUTH = -102 ;

const integer BADVERSION = -103 ;

const integer NOCHILDRENFOREPHEMERALS = -108 ;

const integer NODEEXISTS = -110 ;

const integer NOTEMPTY = -111 ;

const integer SESSIONEXPIRED = -112 ;

const integer INVALIDCALLBACK = -113 ;

const integer INVALIDACL = -114 ;

const integer AUTHFAILED = -115 ;

const integer CLOSING = -116 ;

const integer NOTHING = -117 ;

const integer SESSIONMOVED = -118 ;

const integer NOTREADONLY = -119 ;

const integer EPHEMERALONLOCALSESSION = -120 ;

const integer NOWATCHER = -121 ;

const integer RECONFIGDISABLED = -122 ;

}

预定义常量

ZooKeeper Permissions

Zookeeper::PERM_READ
Can read nodes value and list its children

Zookeeper::PERM_WRITE
Can set the nodes value

Zookeeper::PERM_CREATE
Can create children

Zookeeper::PERM_DELETE
Can delete children

Zookeeper::PERM_ADMIN
Can execute set_acl()

Zookeeper::PERM_ALL
All of the above flags ORd together

ZooKeeper Create Flags

Zookeeper::EPHEMERAL
If Zookeeper::EPHEMERAL flag is set, the node will automatically get removed if the client session goes away.

Zookeeper::SEQUENCE
If the Zookeeper::SEQUENCE flag is set, a unique monotonically increasing sequence number is appended to the path name. The sequence number is always fixed length of 10 digits, 0 padded.

ZooKeeper Log Levels

Zookeeper::LOG_LEVEL_ERROR
Outputs only error mesages

Zookeeper::LOG_LEVEL_WARN
Outputs errors/warnings

Zookeeper::LOG_LEVEL_INFO
Outputs big action messages besides errors/warnings

Zookeeper::LOG_LEVEL_DEBUG
Outputs all

ZooKeeper States

Zookeeper::EXPIRED_SESSION_STATE
Connected but session expired

Zookeeper::AUTH_FAILED_STATE
Connected but auth failed

Zookeeper::CONNECTING_STATE
Connecting

Zookeeper::ASSOCIATING_STATE
Associating

Zookeeper::CONNECTED_STATE
Connected

Zookeeper::READONLY_STATE
TODO: help us improve this extension.

Zookeeper::NOTCONNECTED_STATE
Connection failed

ZooKeeper Watch Types

Zookeeper::CREATED_EVENT
A node has been created

This is only generated by watches on non-existent nodes. These watches are set using Zookeeper::exists.

Zookeeper::DELETED_EVENT
A node has been deleted

This is only generated by watches on nodes. These watches are set using Zookeeper::exists and Zookeeper::get.

Zookeeper::CHANGED_EVENT
A node has changed

This is only generated by watches on nodes. These watches are set using Zookeeper::exists and Zookeeper::get.

Zookeeper::CHILD_EVENT
A change as occurred in the list of children

This is only generated by watches on the child list of a node. These watches are set using Zookeeper::getChildren.

Zookeeper::SESSION_EVENT
A session has been lost

This is generated when a client loses contact or reconnects with a server.

Zookeeper::NOTWATCHING_EVENT
A watch has been removed

This is generated when the server for some reason, probably a resource constraint, will no longer watch a node for a client.

ZooKeeper System and Server-side Errors

Zookeeper::SYSTEMERROR
This is never thrown by the server, it shouldn't be used other than to indicate a range. Specifically error codes greater than this value, but lesser than Zookeeper::APIERROR, are system errors.

Zookeeper::RUNTIMEINCONSISTENCY
A runtime inconsistency was found.

Zookeeper::DATAINCONSISTENCY
A data inconsistency was found.

Zookeeper::CONNECTIONLOSS
Connection to the server has been lost.

Zookeeper::MARSHALLINGERROR
Error while marshalling or unmarshalling data.

Zookeeper::UNIMPLEMENTED
Operation is unimplemented.

Zookeeper::OPERATIONTIMEOUT
Operation timeout.

Zookeeper::BADARGUMENTS
Invalid arguments.

Zookeeper::INVALIDSTATE
Invliad zhandle state.

Zookeeper::NEWCONFIGNOQUORUM
No quorum of new config is connected and up-to-date with the leader of last committed config - try invoking reconfiguration after new servers are connected and synced.

Available as of ZooKeeper 3.5.0

Zookeeper::RECONFIGINPROGRESS
Reconfiguration requested while another reconfiguration is currently in progress. This is currently not supported. Please retry.

Available as of ZooKeeper 3.5.0

ZooKeeper API Errors

Zookeeper::OK
Everything is OK.

Zookeeper::APIERROR
This is never thrown by the server, it shouldn't be used other than to indicate a range. Specifically error codes greater than this value are API errors (while values less than this indicate a Zookeeper::SYSTEMERROR).

Zookeeper::NONODE
Node does not exist.

Zookeeper::NOAUTH
Not authenticated.

Zookeeper::BADVERSION
Version conflict.

Zookeeper::NOCHILDRENFOREPHEMERALS
Ephemeral nodes may not have children.

Zookeeper::NODEEXISTS
The node already exists.

Zookeeper::NOTEMPTY
The node has children.

Zookeeper::SESSIONEXPIRED
The session has been expired by the server.

Zookeeper::INVALIDCALLBACK
Invalid callback specified.

Zookeeper::INVALIDACL
Invalid ACL specified.

Zookeeper::AUTHFAILED
Client authentication failed.

Zookeeper::CLOSING
ZooKeeper is closing.

Zookeeper::NOTHING
(not error) No server responses to process.

Zookeeper::SESSIONMOVED
Session moved to another server, so operation is ignored.

Zookeeper::NOTREADONLY
State-changing request is passed to read-only server.

Zookeeper::EPHEMERALONLOCALSESSION
Attempt to create ephemeral node on a local session.

Zookeeper::NOWATCHER
The watcher couldn't be found.

Zookeeper::RECONFIGDISABLED
Attempts to perform a reconfiguration operation when reconfiguration feature is disabled.

Zookeeper::addAuth

Specify application credentials

说明

public bool Zookeeper::addAuth ( string $scheme , string $cert [, callable $completion_cb = NULL ] )

The application calls this function to specify its credentials for purposes of authentication. The server will use the security provider specified by the scheme parameter to authenticate the client connection. If the authentication request has failed: - the server connection is dropped. - the watcher is called with the ZOO_AUTH_FAILED_STATE value as the state parameter.

参数

scheme
The id of authentication scheme. Natively supported: "digest" password-based authentication

cert
Application credentials. The actual value depends on the scheme.

completion_cb
The routine to invoke when the request completes. One of the following result codes may be passed into the completion callback: - ZOK operation completed successfully - ZAUTHFAILED authentication failed

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or operation fails.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::addAuth example

Add auth before requesting node value.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$value = 'nodevalue';
$zookeeper->set($path, $value);

$zookeeper->addAuth('digest', 'user0:passwd0');
$r = $zookeeper->get($path);
if ($r)
  echo $r;
else
  echo 'ERR';
?>

以上例程会输出:

nodevalue

参见

  • Zookeeper::create
  • Zookeeper::setAcl
  • Zookeeper::getAcl
  • ZooKeeper States
  • ZookeeperException

Zookeeper::close

Close the zookeeper handle and free up any resources

说明

public void Zookeeper::close ( void )

错误/异常

This method emits ZookeeperException and it's derivatives when closing an uninitialized instance.

参见

  • Zookeeper::__construct
  • Zookeeper::connect
  • ZookeeperException

Zookeeper::connect

Create a handle to used communicate with zookeeper

说明

public void Zookeeper::connect ( string $host [, callable $watcher_cb = NULL [, int $recv_timeout = 10000 ]] )

This method creates a new handle and a zookeeper session that corresponds to that handle. Session establishment is asynchronous, meaning that the session should not be considered established until (and unless) an event of state ZOO_CONNECTED_STATE is received.

参数

host
Comma separated host:port pairs, each corresponding to a zk server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"

watcher_cb
The global watcher callback function. When notifications are triggered this function will be invoked.

recv_timeout
The timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE).

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or could not init instance.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::__construct
  • ZookeeperException

Zookeeper::__construct

Create a handle to used communicate with zookeeper

说明

public Zookeeper::__construct ([ string $host = '' [, callable $watcher_cb = NULL [, int $recv_timeout = 10000 ]]] )

This method creates a new handle and a zookeeper session that corresponds to that handle. Session establishment is asynchronous, meaning that the session should not be considered established until (and unless) an event of state ZOO_CONNECTED_STATE is received.

参数

host
comma separated host:port pairs, each corresponding to a zk server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"

watcher_cb
the global watcher callback function. When notifications are triggered this function will be invoked.

recv_timeout
the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE).

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or could not init instance.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::connect
  • ZookeeperException

Zookeeper::create

Create a node synchronously

说明

public string Zookeeper::create ( string $path , string $value , array $acls [, int $flags = NULL ] )

This method will create a node in ZooKeeper. A node can only be created if it does not already exists. The Create Flags affect the creation of nodes. If ZOO_EPHEMERAL flag is set, the node will automatically get removed if the client session goes away. If the ZOO_SEQUENCE flag is set, a unique monotonically increasing sequence number is appended to the path name.

参数

path
The name of the node. Expressed as a file name with slashes separating ancestors of the node.

value
The data to be stored in the node.

acls
The initial ACL of the node. The ACL must not be null or empty.

flags
this parameter can be set to 0 for normal create or an OR of the Create Flags

返回值

Returns the path of the new node (this might be different than the supplied path because of the ZOO_SEQUENCE flag) on success, and false on failure.

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to create node.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::create example

Create a new node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$aclArray = array(
  array(
    'perms'  => Zookeeper::PERM_ALL,
    'scheme' => 'world',
    'id'     => 'anyone',
  )
);
$path = '/path/to/newnode';
$realPath = $zookeeper->create($path, null, $aclArray);
if ($realPath)
  echo $realPath;
else
  echo 'ERR';
?>

以上例程会输出:

/path/to/newnode

参见

Zookeeper::delete

Delete a node in zookeeper synchronously

说明

public bool Zookeeper::delete ( string $path [, int $version = -1 ] )

参数

path
The name of the node. Expressed as a file name with slashes separating ancestors of the node.

version
The expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to delete node.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::delete example

Delete a existing node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$r = $zookeeper->delete($path);
if ($r)
  echo 'SUCCESS';
else
  echo 'ERR';
?>

以上例程会输出:

SUCCESS

参见

  • Zookeeper::create
  • Zookeeper::getChildren
  • ZookeeperException

Zookeeper::exists

Checks the existence of a node in zookeeper synchronously

说明

public array Zookeeper::exists ( string $path [, callable $watcher_cb = NULL ] )

参数

path
The name of the node. Expressed as a file name with slashes separating ancestors of the node.

watcher_cb
if nonzero, a watch will be set at the server to notify the client if the node changes. The watch will be set even if the node does not

返回值

Returns the value of stat for the path if the given node exists, otherwise false.

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to check the existence of a node.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::exists example

Check the existence of a node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$r = $zookeeper->exists($path);
if ($r)
  echo 'EXISTS';
else
  echo 'N/A or ERR';
?>

以上例程会输出:

EXISTS

参见

  • Zookeeper::get
  • ZookeeperException

Zookeeper::get

Gets the data associated with a node synchronously

说明

public string Zookeeper::get ( string $path [, callable $watcher_cb = NULL [, array &$stat = NULL [, int $max_size = 0 ]]] )

参数

path
The name of the node. Expressed as a file name with slashes separating ancestors of the node.

watcher_cb
If nonzero, a watch will be set at the server to notify the client if the node changes.

stat
If not NULL, will hold the value of stat for the path on return.

max_size
Max size of the data. If 0 is used, this method will return the whole data.

返回值

Returns the data on success, and false on failure.

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to get value from node.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::get example

Get value from node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$value = 'nodevalue';
$zookeeper->set($path, $value);

$r = $zookeeper->get($path);
if ($r)
  echo $r;
else
  echo 'ERR';
?>

以上例程会输出:

nodevalue

示例 #2 Zookeeper::get stat example

Get node stat info.

<?php
$zookeeper = new Zookeeper('localhost:2181');
$path = '/path/to/node';
$stat = [];
$zookeeper->get($path, null, $stat);
var_dump($stat);
?>

以上例程会输出:

array(11) {
  ["czxid"]=>
  float(0)
  ["mzxid"]=>
  float(0)
  ["ctime"]=>
  float(0)
  ["mtime"]=>
  float(0)
  ["version"]=>
  int(0)
  ["cversion"]=>
  int(-2)
  ["aversion"]=>
  int(0)
  ["ephemeralOwner"]=>
  float(0)
  ["dataLength"]=>
  int(0)
  ["numChildren"]=>
  int(2)
  ["pzxid"]=>
  float(0)
}

参见

  • Zookeeper::set
  • ZookeeperException

Zookeeper::getAcl

Gets the acl associated with a node synchronously

说明

public array Zookeeper::getAcl ( string $path )

参数

path
The name of the node. Expressed as a file name with slashes separating ancestors of the node.

返回值

Return acl array on success and false on failure.

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to get ACL of a node.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::getAcl example

Get ACL of a node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$aclArray = array(
  array(
    'perms'  => Zookeeper::PERM_ALL,
    'scheme' => 'world',
    'id'     => 'anyone',
  )
);
$path = '/path/to/newnode';
$zookeeper->setAcl($path, $aclArray);

$r = $zookeeper->getAcl($path);
if ($r)
  var_dump($r);
else
  echo 'ERR';
?>

以上例程会输出:

array(1) {
  [0]=>
  array(3) {
    ["perms"]=>
    int(31)
    ["scheme"]=>
    string(5) "world"
    ["id"]=>
    string(6) "anyone"
  }
}

参见

Zookeeper::getChildren

Lists the children of a node synchronously

说明

public array Zookeeper::getChildren ( string $path [, callable $watcher_cb = NULL ] )

参数

path
The name of the node. Expressed as a file name with slashes separating ancestors of the node.

watcher_cb
If nonzero, a watch will be set at the server to notify the client if the node changes.

返回值

Returns an array with children paths on success, and false on failure.

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to list children of a node.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::getChildren example

Lists children of a node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/zookeeper';
$r = $zookeeper->getchildren($path);
if ($r)
  var_dump($r);
else
  echo 'ERR';
?>

以上例程会输出:

array(1) {
  [0]=>
  string(6) "config"
}

参见

  • Zookeeper::create
  • Zookeeper::delete
  • ZookeeperException

Zookeeper::getClientId

Return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE)

说明

public int Zookeeper::getClientId ( void )

返回值

Returns the client session id on success, and false on failure.

错误/异常

This method emits PHP error/warning when it could not get client session id.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::__construct
  • Zookeeper::connect
  • Zookeeper::getState
  • ZooKeeper States
  • ZookeeperException

Zookeeper::getConfig

Get instance of ZookeeperConfig

说明

public ZookeeperConfig Zookeeper::getConfig ( void )

返回值

Returns instance of ZookeeperConfig.

参见

  • ZookeeperConfig

Zookeeper::getRecvTimeout

Return the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE). This value may change after a server re-connect

说明

public int Zookeeper::getRecvTimeout ( void )

返回值

Returns the timeout for this session on success, and false on failure.

错误/异常

This method emits PHP error/warning when operation fails.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::__construct
  • Zookeeper::connect
  • ZookeeperException

Zookeeper::getState

Get the state of the zookeeper connection

说明

public int Zookeeper::getState ( void )

返回值

Returns the state of zookeeper connection on success, and false on failure.

错误/异常

This method emits PHP error/warning when it fails to get state of zookeeper connection.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::__construct
  • Zookeeper::connect
  • Zookeeper::getClientId
  • ZooKeeper States
  • ZookeeperException

Zookeeper::isRecoverable

Checks if the current zookeeper connection state can be recovered

说明

public bool Zookeeper::isRecoverable ( void )

The application must close the handle and try to reconnect.

返回值

Returns true/false on success, and false on failure.

错误/异常

This method emits PHP error/warning when operation fails.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::__construct
  • Zookeeper::connect
  • Zookeeper::getClientId
  • ZooKeeper States
  • ZookeeperException

Zookeeper::set

Sets the data associated with a node

说明

public bool Zookeeper::set ( string $path , string $value [, int $version = -1 [, array &$stat = NULL ]] )

参数

path
The name of the node. Expressed as a file name with slashes separating ancestors of the node.

value
The data to be stored in the node.

version
The expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place.

stat
If not NULL, will hold the value of stat for the path on return.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to save value to node.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::set example

Save value to node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$value = 'nodevalue';
$r = $zookeeper->set($path, $value);
if ($r)
  echo 'SUCCESS';
else
  echo 'ERR';
?>

以上例程会输出:

SUCCESS

参见

  • Zookeeper::create
  • Zookeeper::get
  • ZookeeperException

Zookeeper::setAcl

Sets the acl associated with a node synchronously

说明

public bool Zookeeper::setAcl ( string $path , int $version , array $acl )

参数

path
The name of the node. Expressed as a file name with slashes separating ancestors of the node.

version
The expected version of the path.

acl
The acl to be set on the path.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to set ACL for a node.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::setAcl example

Set ACL for a node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$aclArray = array(
  array(
    'perms'  => Zookeeper::PERM_ALL,
    'scheme' => 'world',
    'id'     => 'anyone',
  )
);
$path = '/path/to/newnode';
$zookeeper->setAcl($path, $aclArray);

$r = $zookeeper->getAcl($path);
if ($r)
  var_dump($r);
else
  echo 'ERR';
?>

以上例程会输出:

array(1) {
  [0]=>
  array(3) {
    ["perms"]=>
    int(31)
    ["scheme"]=>
    string(5) "world"
    ["id"]=>
    string(6) "anyone"
  }
}

参见

Zookeeper::setDebugLevel

Sets the debugging level for the library

说明

public static bool Zookeeper::setDebugLevel ( int $logLevel )

参数

logLevel
ZooKeeper log level constants.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to set debug level.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

范例

示例 #1 Zookeeper::setDebugLevel example

Set debugl level.

<?php
$r = Zookeeper::setDebugLevel(Zookeeper::LOG_LEVEL_WARN);
if ($r)
  echo 'SUCCESS';
else
  echo 'ERR';
?>
?>

以上例程会输出:

SUCCESS

参见

Zookeeper::setDeterministicConnOrder

Enable/disable quorum endpoint order randomization

说明

public static bool Zookeeper::setDeterministicConnOrder ( bool $yesOrNo )

If passed a true value, will make the client connect to quorum peers in the order as specified in the zookeeper_init() call. A false value causes zookeeper_init() to permute the peer endpoints which is good for more even client connection distribution among the quorum peers. ZooKeeper C Client uses false by default.

参数

yesOrNo
Disable/enable quorum endpoint order randomization.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or operation fails.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::__construct
  • Zookeeper::connect
  • ZookeeperException

Zookeeper::setLogStream

Sets the stream to be used by the library for logging

说明

public bool Zookeeper::setLogStream ( resource $stream )

The zookeeper library uses stderr as its default log stream. Application must make sure the stream is writable. Passing in NULL resets the stream to its default value (stderr).

参数

stream
The stream to be used by the library for logging.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or operation fails.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::setDebugLevel
  • ZookeeperException

Zookeeper::setWatcher

Set a watcher function

说明

public bool Zookeeper::setWatcher ( callable $watcher_cb )

参数

watcher_cb
A watch will be set at the server to notify the client if the node changes.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

错误/异常

This method emits PHP error/warning when parameters count or types are wrong or fail to set watcher.

Caution

Since version 0.3.0, this method emits ZookeeperException and it's derivatives.

参见

  • Zookeeper::exists
  • Zookeeper::get
  • ZookeeperException

简介

The ZooKeeper Config handling class.

类摘要

ZookeeperConfig

class ZookeeperConfig {

/* 方法 */

public void add ( string $members [, int $version = -1 [, array &$stat = NULL ]] )

public string get ([ callable $watcher_cb = NULL [, array &$stat = NULL ]] )

public void remove ( string $id_list [, int $version = -1 [, array &$stat = NULL ]] )

public void set ( string $members [, int $version = -1 [, array &$stat = NULL ]] )

}

ZookeeperConfig::add

Add servers to the ensemble

说明

public void ZookeeperConfig::add ( string $members [, int $version = -1 [, array &$stat = NULL ]] )

参数

members
Comma separated list of servers to be added to the ensemble. Each has a configuration line for a server to be added (as would appear in a configuration file), only for maj. quorums.

version
The expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place.

stat
If not NULL, will hold the value of stat for the path on return.

错误/异常

This method emits ZookeeperException and it's derivatives when parameters count or types are wrong or fail to save value to node.

范例

示例 #1 ZookeeperConfig::add example

Add members.

<?php
$client = new Zookeeper();
$client->connect('localhost:2181');
$client->addAuth('digest', 'timandes:timandes');
$zkConfig = $client->getConfig();
$zkConfig->set("server.1=localhost:2888:3888:participant;0.0.0.0:2181");
$zkConfig->add("server.2=localhost:2889:3889:participant;0.0.0.0:2182");
$r = $zkConfig->get();
if ($r)
  echo $r;
else
  echo 'ERR';
?>

以上例程会输出:

server.1=localhost:2888:3888:participant;0.0.0.0:2181
server.2=localhost:2889:3889:participant;0.0.0.0:2182
version=0xca01e881a2

参见

  • ZookeeperConfig::get
  • ZookeeperConfig::set
  • ZookeeperConfig::remove
  • ZookeeperException

ZookeeperConfig::get

Gets the last committed configuration of the ZooKeeper cluster as it is known to the server to which the client is connected, synchronously

说明

public string ZookeeperConfig::get ([ callable $watcher_cb = NULL [, array &$stat = NULL ]] )

参数

watcher_cb
If nonzero, a watch will be set at the server to notify the client if the node changes.

stat
If not NULL, will hold the value of stat for the path on return.

返回值

Returns the configuration string on success, and false on failure.

错误/异常

This method emits ZookeeperException and it's derivatives when parameters count or types are wrong or fail to get configuration.

范例

示例 #1 ZookeeperConfig::get example

Get configuration.

<?php
$zk = new Zookeeper();
$zk->connect('localhost:2181');
$zk->addAuth('digest', 'timandes:timandes');
$zkConfig = $zk->getConfig();
$r = $zkConfig->get();
if ($r)
  echo $r;
else
  echo 'ERR';
?>

以上例程会输出:

server.1=localhost:2888:3888:participant;0.0.0.0:2181
version=0xca01e881a2

参见

  • ZookeeperConfig::set
  • ZookeeperConfig::add
  • ZookeeperConfig::remove
  • ZookeeperException

ZookeeperConfig::remove

Remove servers from the ensemble

说明

public void ZookeeperConfig::remove ( string $id_list [, int $version = -1 [, array &$stat = NULL ]] )

参数

id_list
Comma separated list of server IDs to be removed from the ensemble. Each has an id of a server to be removed, only for maj. quorums.

version
The expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place.

stat
If not NULL, will hold the value of stat for the path on return.

错误/异常

This method emits ZookeeperException and it's derivatives when parameters count or types are wrong or fail to save value to node.

范例

示例 #1 ZookeeperConfig::remove example

Remove members.

<?php
$client = new Zookeeper();
$client->connect('localhost:2181');
$client->addAuth('digest', 'timandes:timandes');
$zkConfig = $client->getConfig();
$zkConfig->set("server.1=localhost:2888:3888:participant;0.0.0.0:2181,server.2=localhost:2889:3889:participant;0.0.0.0:2182");
$zkConfig->remove("2");
echo $zkConfig->get();
if ($r)
  echo $r;
else
  echo 'ERR';
?>

以上例程会输出:

server.1=localhost:2888:3888:participant;0.0.0.0:2181
version=0xca01e881a2

参见

  • ZookeeperConfig::get
  • ZookeeperConfig::add
  • ZookeeperConfig::set
  • ZookeeperException

ZookeeperConfig::set

Change ZK cluster ensemble membership and roles of ensemble peers

说明

public void ZookeeperConfig::set ( string $members [, int $version = -1 [, array &$stat = NULL ]] )

参数

members
Comma separated list of new membership (e.g., contents of a membership configuration file) - for use only with a non-incremental reconfiguration.

version
The expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place.

stat
If not NULL, will hold the value of stat for the path on return.

错误/异常

This method emits ZookeeperException and it's derivatives when parameters count or types are wrong or fail to save value to node.

范例

示例 #1 ZookeeperConfig::set example

Reconfig.

<?php
$client = new Zookeeper();
$client->connect('localhost:2181');
$client->addAuth('digest', 'timandes:timandes');
$zkConfig = $client->getConfig();
$zkConfig->set("server.1=localhost:2888:3888:participant;0.0.0.0:2181");
?>

参见

  • ZookeeperConfig::get
  • ZookeeperConfig::add
  • ZookeeperConfig::remove
  • ZookeeperException

简介

The ZooKeeper exception handling class.

类摘要

ZookeeperException

class ZookeeperException extends Exception {

/* 继承的属性 */

protected string $message ;

protected int $code ;

protected string $file ;

protected int $line ;

/* 继承的方法 */

final public string Exception::getMessage ( void )

final public Throwable Exception::getPrevious ( void )

final public int Exception::getCode ( void )

final public string Exception::getFile ( void )

final public int Exception::getLine ( void )

final public array Exception::getTrace ( void )

final public string Exception::getTraceAsString ( void )

public string Exception::__toString ( void )

final private void Exception::__clone ( void )

}

简介

The ZooKeeper authentication exception handling class.

类摘要

ZookeeperAuthenticationException

class ZookeeperAuthenticationException extends ZookeeperException {

/* 继承的属性 */

protected string $message ;

protected int $code ;

protected string $file ;

protected int $line ;

/* 继承的方法 */

final public string Exception::getMessage ( void )

final public Throwable Exception::getPrevious ( void )

final public int Exception::getCode ( void )

final public string Exception::getFile ( void )

final public int Exception::getLine ( void )

final public array Exception::getTrace ( void )

final public string Exception::getTraceAsString ( void )

public string Exception::__toString ( void )

final private void Exception::__clone ( void )

}

简介

The ZooKeeper connection exception handling class.

类摘要

ZookeeperConnectionException

class ZookeeperConnectionException extends ZookeeperException {

/* 继承的属性 */

protected string $message ;

protected int $code ;

protected string $file ;

protected int $line ;

/* 继承的方法 */

final public string Exception::getMessage ( void )

final public Throwable Exception::getPrevious ( void )

final public int Exception::getCode ( void )

final public string Exception::getFile ( void )

final public int Exception::getLine ( void )

final public array Exception::getTrace ( void )

final public string Exception::getTraceAsString ( void )

public string Exception::__toString ( void )

final private void Exception::__clone ( void )

}

简介

The ZooKeeper exception (while marshalling or unmarshalling data) handling class.

类摘要

ZookeeperMarshallingException

class ZookeeperMarshallingException extends ZookeeperException {

/* 继承的属性 */

protected string $message ;

protected int $code ;

protected string $file ;

protected int $line ;

/* 继承的方法 */

final public string Exception::getMessage ( void )

final public Throwable Exception::getPrevious ( void )

final public int Exception::getCode ( void )

final public string Exception::getFile ( void )

final public int Exception::getLine ( void )

final public array Exception::getTrace ( void )

final public string Exception::getTraceAsString ( void )

public string Exception::__toString ( void )

final private void Exception::__clone ( void )

}

简介

The ZooKeeper exception (when node does not exist) handling class.

类摘要

ZookeeperNoNodeException

class ZookeeperNoNodeException extends ZookeeperException {

/* 继承的属性 */

protected string $message ;

protected int $code ;

protected string $file ;

protected int $line ;

/* 继承的方法 */

final public string Exception::getMessage ( void )

final public Throwable Exception::getPrevious ( void )

final public int Exception::getCode ( void )

final public string Exception::getFile ( void )

final public int Exception::getLine ( void )

final public array Exception::getTrace ( void )

final public string Exception::getTraceAsString ( void )

public string Exception::__toString ( void )

final private void Exception::__clone ( void )

}

简介

The ZooKeeper operation timeout exception handling class.

类摘要

ZookeeperOperationTimeoutException

class ZookeeperOperationTimeoutException extends ZookeeperException {

/* 继承的属性 */

protected string $message ;

protected int $code ;

protected string $file ;

protected int $line ;

/* 继承的方法 */

final public string Exception::getMessage ( void )

final public Throwable Exception::getPrevious ( void )

final public int Exception::getCode ( void )

final public string Exception::getFile ( void )

final public int Exception::getLine ( void )

final public array Exception::getTrace ( void )

final public string Exception::getTraceAsString ( void )

public string Exception::__toString ( void )

final private void Exception::__clone ( void )

}

简介

The ZooKeeper session exception handling class.

类摘要

ZookeeperSessionException

class ZookeeperSessionException extends ZookeeperException {

/* 继承的属性 */

protected string $message ;

protected int $code ;

protected string $file ;

protected int $line ;

/* 继承的方法 */

final public string Exception::getMessage ( void )

final public Throwable Exception::getPrevious ( void )

final public int Exception::getCode ( void )

final public string Exception::getFile ( void )

final public int Exception::getLine ( void )

final public array Exception::getTrace ( void )

final public string Exception::getTraceAsString ( void )

public string Exception::__toString ( void )

final private void Exception::__clone ( void )

}