# La classe Zookeeper

(PECL zookeeper >= 0.1.0)

## Introduction

Représente une session ZooKeeper.

## Synopsis de la classe

class Zookeeper {
/* Méthodes */
public __construct(string `$host` = '', callable `$watcher_cb` = `null`, int `$recv_timeout` = 10000)
public addAuth(string `$scheme`, string `$cert`, callable `$completion_cb` = `null`): bool
public close(): void
public connect(string `$host`, callable `$watcher_cb` = `null`, int `$recv_timeout` = 10000): void
public create(
string `$path`,
string `$value`,
array `$acls`,
int `$flags` = `null`
): string
public delete(string `$path`, int `$version` = -1): bool
public exists(string `$path`, callable `$watcher_cb` = `null`): array
public get(
string `$path`,
callable `$watcher_cb` = `null`,
array `&$stat` = `null`,
int `$max_size` = 0
): string
public getAcl(string `$path`): array
public getChildren(string `$path`, callable `$watcher_cb` = `null`): array
public getClientId(): int
public getConfig(): ZookeeperConfig
public getRecvTimeout(): int
public getState(): int
public isRecoverable(): bool
public set(
string `$path`,
string `$value`,
int `$version` = -1,
array `&$stat` = `null`
): bool
public setAcl(string `$path`, int `$version`, array `$acl`): bool
public static setDebugLevel(int `$logLevel`): bool
public static setDeterministicConnOrder(bool `$yesOrNo`): bool
public setLogStream(resource `$stream`): bool
public setWatcher(callable `$watcher_cb`): bool
/* Constantes */
const int PERM_READ = 1;
const int PERM_WRITE = 2;
const int PERM_CREATE = 4;
const int PERM_DELETE = 8;
const int PERM_ADMIN = 16;
const int PERM_ALL = 31;
const int EPHEMERAL = 1;
const int SEQUENCE = 2;
const int LOG_LEVEL_ERROR = 1;
const int LOG_LEVEL_WARN = 2;
const int LOG_LEVEL_INFO = 3;
const int LOG_LEVEL_DEBUG = 4;
const int EXPIRED_SESSION_STATE = -112;
const int AUTH_FAILED_STATE = -113;
const int CONNECTING_STATE = 1;
const int ASSOCIATING_STATE = 2;
const int CONNECTED_STATE = 3;
const int READONLY_STATE = 5;
const int NOTCONNECTED_STATE = 999;
const int CREATED_EVENT = 1;
const int DELETED_EVENT = 2;
const int CHANGED_EVENT = 3;
const int CHILD_EVENT = 4;
const int SESSION_EVENT = -1;
const int NOTWATCHING_EVENT = -2;
const int SYSTEMERROR = -1;
const int RUNTIMEINCONSISTENCY = -2;
const int DATAINCONSISTENCY = -3;
const int CONNECTIONLOSS = -4;
const int MARSHALLINGERROR = -5;
const int UNIMPLEMENTED = -6;
const int OPERATIONTIMEOUT = -7;
const int BADARGUMENTS = -8;
const int INVALIDSTATE = -9;
const int NEWCONFIGNOQUORUM = -13;
const int RECONFIGINPROGRESS = -14;
const int OK = 0;
const int APIERROR = -100;
const int NONODE = -101;
const int NOAUTH = -102;
const int BADVERSION = -103;
const int NOCHILDRENFOREPHEMERALS = -108;
const int NODEEXISTS = -110;
const int NOTEMPTY = -111;
const int SESSIONEXPIRED = -112;
const int INVALIDCALLBACK = -113;
const int INVALIDACL = -114;
const int AUTHFAILED = -115;
const int CLOSING = -116;
const int NOTHING = -117;
const int SESSIONMOVED = -118;
const int NOTREADONLY = -119;
const int EPHEMERALONLOCALSESSION = -120;
const int NOWATCHER = -121;
const int RECONFIGDISABLED = -122;
}

## Constantes pré-définies

## Permissions de ZooKeeper

`Zookeeper::PERM_READ`

  Peut lire la valeur des noeuds et lister ses enfants

`Zookeeper::PERM_WRITE`

  Peut modifier la valeur des noeuds

`Zookeeper::PERM_CREATE`

  Peut créer des enfants

`Zookeeper::PERM_DELETE`

  Peut supprimer des enfants

`Zookeeper::PERM_ADMIN`

  Peut éxécuter set_acl()

`Zookeeper::PERM_ALL`

  Tous les flags ci-dessus ORd ensemble

## Drapeaux de création ZooKeeper

`Zookeeper::EPHEMERAL`

  Si le drapeau Zookeeper::EPHEMERAL est mis, le noeud sera automatiquement supprimé si la session du client est perdue.

`Zookeeper::SEQUENCE`

  Si le drapeau Zookeeper::SEQUENCE est mis, un numéro de séquence unique et croissant est ajouté au nom du noeud. Le numéro de séquence est toujours de 10 chiffres, complété par des zéros.

## Niveaux de journalisation ZooKeeper

`Zookeeper::LOG_LEVEL_ERROR`

  Sortie des messages d'erreur uniquement

`Zookeeper::LOG_LEVEL_WARN`

  Sortie des messages d'erreur et d'avertissement

`Zookeeper::LOG_LEVEL_INFO`

  Sortie des messages d'action importante en plus des erreurs et avertissements

`Zookeeper::LOG_LEVEL_DEBUG`

  Sortie de tous les messages

## Etats ZooKeeper

`Zookeeper::EXPIRED_SESSION_STATE`

  Connecté mais la session a expiré

`Zookeeper::AUTH_FAILED_STATE`

  Connecté mais l'authentification a échoué

`Zookeeper::CONNECTING_STATE`

  Connexion en cours

`Zookeeper::ASSOCIATING_STATE`

  Association en cours

`Zookeeper::CONNECTED_STATE`

  Connecté

`Zookeeper::READONLY_STATE`

  TODO: aidez nous à améliorer cette extension.

`Zookeeper::NOTCONNECTED_STATE`

  La connexion a échoué

## ZooKeeper Watch Types

`Zookeeper::CREATED_EVENT`

  Un noeud a été créé

  Ceci est généré uniquement par les observateurs sur des noeuds inexistants. Ces observateurs sont définis en utilisant Zookeeper::exists.

`Zookeeper::DELETED_EVENT`

  Un noeud a été supprimé

  Ceci est généré uniquement par les observateurs sur des noeuds. Ces observateurs sont définis en utilisant Zookeeper::exists et Zookeeper::get.

`Zookeeper::CHANGED_EVENT`

  Un noeud a été changé

  Ceci est généré uniquement par les observateurs sur des noeuds. Ces observateurs sont définis en utilisant Zookeeper::exists et Zookeeper::get.

`Zookeeper::CHILD_EVENT`

  Un changement a eu lieu dans la liste des enfants

  Ceci est généré uniquement par les observateurs sur la liste des enfants d'un noeud. Ces observateurs sont définis en utilisant Zookeeper::getChildren.

`Zookeeper::SESSION_EVENT`

  Une session à été perdue

  Ceci est généré lorsqu'un client perd le contact ou se reconnecte avec un serveur.

`Zookeeper::NOTWATCHING_EVENT`

  Un observateur a été supprimé

  Ceci est généré lorsque le serveur pour une raison quelconque, probablement une contrainte de ressource, ne surveillera plus un noeud pour un client.

## Erreurs systèmes et coté serveur ZooKeeper

`Zookeeper::SYSTEMERROR`

  Ceci n'est jamais généré par le serveur, il ne devrait pas être utilisé autrement que pour indiquer une plage. Spécifiquement les codes d'erreurs supérieurs à cette valeur, mais inférieurs à Zookeeper::APIERROR, sont des erreurs systèmes.

`Zookeeper::RUNTIMEINCONSISTENCY`

  Une incohérence d'exécution a été trouvée.

`Zookeeper::DATAINCONSISTENCY`

  Une incohérence de données a été trouvée.

`Zookeeper::CONNECTIONLOSS`

  La connexion au serveur a été perdue

`Zookeeper::MARSHALLINGERROR`

  Erreur lors de la sérialisation ou désérialisation des données.

`Zookeeper::UNIMPLEMENTED`

  L'opération n'est pas implémentée.

`Zookeeper::OPERATIONTIMEOUT`

  L'opération a expiré.

`Zookeeper::BADARGUMENTS`

  Arguments invalides.

`Zookeeper::INVALIDSTATE`

  Etat zhandle invalide.

`Zookeeper::NEWCONFIGNOQUORUM`

  Aucun quorum de la nouvelle configuration n'est connecté et à jour avec le leader de la dernière configuration validée - essayez d'invoquer la reconfiguration après que les nouveaux serveurs soient connectés et synchronisés.

  Disponible à partir de ZooKeeper 3.5.0

`Zookeeper::RECONFIGINPROGRESS`

  Reconfiguration demandée alors qu'une autre reconfiguration est en cours. Ceci n'est actuellement pas supporté. Veuillez réessayer.

  Disponible à partir de ZooKeeper 3.5.0

## Erreur d'api ZooKeeper

`Zookeeper::OK`

  Tout est OK.

`Zookeeper::APIERROR`

  Ceci n'est jamais généré par le serveur, il ne devrait pas être utilisé autrement que pour indiquer une plage. Spécifiquement les codes d'erreurs supérieurs à cette valeur sont des erreurs d'api (tandis que les valeurs inférieures indiquent une Zookeeper::SYSTEMERROR).

`Zookeeper::NONODE`

  Le noeud n'existe pas.

`Zookeeper::NOAUTH`

  Non authentifié.

`Zookeeper::BADVERSION`

  Conflit de version.

`Zookeeper::NOCHILDRENFOREPHEMERALS`

  Les noeuds éphémères ne peuvent pas avoir d'enfants.

`Zookeeper::NODEEXISTS`

  Le noeud existe déjà.

`Zookeeper::NOTEMPTY`

  Le noeud a des enfants.

`Zookeeper::SESSIONEXPIRED`

  La session a expiré par le serveur.

`Zookeeper::INVALIDCALLBACK`

  Callback spécifié invalide.

`Zookeeper::INVALIDACL`

  ACL spécifié invalide.

`Zookeeper::AUTHFAILED`

  L'autentification du client a échoué.

`Zookeeper::CLOSING`

  ZooKeeper est en train de fermer.

`Zookeeper::NOTHING`

  (pas une erreur) Aucune réponse du serveur à traiter.

`Zookeeper::SESSIONMOVED`

  La session a été déplacée vers un autre serveur, donc l'opération est ignorée.

`Zookeeper::NOTREADONLY`

  Requête de changement d'état passée à un serveur en lecture seule.

`Zookeeper::EPHEMERALONLOCALSESSION`

  Tentative de création de noeud éphémère sur une session locale.

`Zookeeper::NOWATCHER`

  L'observateur n'a pas été trouvé.

`Zookeeper::RECONFIGDISABLED`

  Tentative de réaliser une opération de reconfiguration alors que la fonctionnalité de reconfiguration est désactivée.

## Sommaire

- Zookeeper::addAuth — Spécifie les informations d'authentification de l'application
- Zookeeper::close — Ferme la connexion au serveur ZooKeeper et libère les ressources associées
- Zookeeper::connect — Créer une connexion pour communiquer avec Zookeeper
- Zookeeper::__construct — Créer une connexion pour communiquer avec Zookeeper
- Zookeeper::create — Créer un nœud de manière synchrone
- Zookeeper::delete — Enlève un nœud de manière synchrone
- Zookeeper::exists — Vérifie l'existence d'un nœud de manière synchrone
- Zookeeper::get — Renvoie les données associées à un nœud de manière synchrone
- Zookeeper::getAcl — Renvoie les ACL associées à un nœud de manière synchrone
- Zookeeper::getChildren — Liste les enfants d'un nœud de manière synchrone
- Zookeeper::getClientId — Renvoie l'identifiant de session client, uniquement valide si la connexion est actuellement établie (c'est-à-dire si le dernier état de l'observateur est ZOO_CONNECTED_STATE)
- Zookeeper::getConfig — Renvoie l'instance de ZookeeperConfig
- Zookeeper::getRecvTimeout — Renvoie le délai d'attente pour cette session, uniquement valide si la connexion est actuellement établie (c'est-à-dire si le dernier état de l'observateur est ZOO_CONNECTED_STATE). Cette valeur peut changer après une reconnexion au serveur
- Zookeeper::getState — Renvoie l'état de la connexion zookeeper
- Zookeeper::isRecoverable — Vérifie si l'état de connexion zookeeper actuel peut être récupéré
- Zookeeper::set — Définit les données associées à un nœud
- Zookeeper::setAcl — Définit l'ACL associé à un nœud de manière synchrone
- Zookeeper::setDebugLevel — Définit le niveau de débogage pour la librairie
- Zookeeper::setDeterministicConnOrder — Active/désactive la randomisation de l'ordre des points de terminaison du quorum
- Zookeeper::setLogStream — Définit le flux à utiliser par la librairie pour le journal
- Zookeeper::setWatcher — Définit une fonction d'observation