# Класс Zookeeper

(PECL zookeeper >= 0.1.0)

## Введение

Класс представляет сессию модуля ZooKeeper.

## Обзор класса

class Zookeeper {
/* Методы */
public function __construct(string `$host` = '', callable `$watcher_cb` = `null`, int `$recv_timeout` = 10000)
public function addAuth(string `$scheme`, string `$cert`, callable `$completion_cb` = `null`): bool
public function close(): void
public function connect(string `$host`, callable `$watcher_cb` = `null`, int `$recv_timeout` = 10000): void
public function create(
string `$path`,
string `$value`,
array `$acls`,
int `$flags` = `null`
): string
public function delete(string `$path`, int `$version` = -1): bool
public function exists(string `$path`, callable `$watcher_cb` = `null`): array
public function get(
string `$path`,
callable `$watcher_cb` = `null`,
array `&$stat` = `null`,
int `$max_size` = 0
): string
public function getAcl(string `$path`): array
public function getChildren(string `$path`, callable `$watcher_cb` = `null`): array
public function getClientId(): int
public function getConfig(): ZookeeperConfig
public function getRecvTimeout(): int
public function getState(): int
public function isRecoverable(): bool
public function set(
string `$path`,
string `$value`,
int `$version` = -1,
array `&$stat` = `null`
): bool
public function setAcl(string `$path`, int `$version`, array `$acl`): bool
public static function setDebugLevel(int `$logLevel`): bool
public static function setDeterministicConnOrder(bool `$yesOrNo`): bool
public function setLogStream(resource `$stream`): bool
public function setWatcher(callable `$watcher_cb`): bool
/* Константы */
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;
}

## Предопределённые константы

## Разрешения ZooKeeper

`Zookeeper::PERM_READ`

  Разрешается читать значение узла и список дочерних узлов

`Zookeeper::PERM_WRITE`

  Разрешается устанавливать значение узла

`Zookeeper::PERM_CREATE`

  Разрешается создавать дочерние элементы

`Zookeeper::PERM_DELETE`

  Разрешается удалять дочерние элементы

`Zookeeper::PERM_ADMIN`

  Разрешается запускать метод set_acl()

`Zookeeper::PERM_ALL`

  Включает все разрешения, как если бы перечисленные флаги объединили побитовым ИЛИ

## Флаги создания ZooKeeper

`Zookeeper::EPHEMERAL`

  Если установлен флаг Zookeeper::EPHEMERAL, узел будет автоматически удалён по завершению клиентской сессии.

`Zookeeper::SEQUENCE`

  Если установлен флаг Zookeeper::SEQUENCE, к имени пути будет добавляться уникальный номер из монотонно возрастающей последовательности. Номер из последовательности всегда имеет фиксированную длину в 10 цифр, дополненную лидирующими нулями по необходимости.

## Уровень логирования ZooKeeper

`Zookeeper::LOG_LEVEL_ERROR`
  Выводить только сообщения об ошибках
`Zookeeper::LOG_LEVEL_WARN`

  Выводить ошибки и предупреждения

`Zookeeper::LOG_LEVEL_INFO`

  Выводить большие сообщения о действиях помимо ошибок и предупреждений

`Zookeeper::LOG_LEVEL_DEBUG`

  Выводить все

## Состояния ZooKeeper

`Zookeeper::EXPIRED_SESSION_STATE`

  Соединение установлено, но сессия истекла

`Zookeeper::AUTH_FAILED_STATE`

  Соединение установлено, но аутентификация неудачная

`Zookeeper::CONNECTING_STATE`

  Устанавливается соединение

`Zookeeper::ASSOCIATING_STATE`

  Ассоциирование

`Zookeeper::CONNECTED_STATE`

  Соединение установлено

`Zookeeper::READONLY_STATE`

  TODO: помогите нам улучшить модуль

`Zookeeper::NOTCONNECTED_STATE`

  Соединение не установлено

## Типы событий ZooKeeper

`Zookeeper::CREATED_EVENT`

  Узел был создан

  Генерируется только путём наблюдения за несуществующими узлами. Эти наблюдатели задаются с помощью Zookeeper::exists.

`Zookeeper::DELETED_EVENT`

  Узел был удалён

  Генерируется только путём наблюдения за узлами. Эти наблюдатели задаются с помощью Zookeeper::exists и Zookeeper::get.

`Zookeeper::CHANGED_EVENT`

  Узел был изменён

  Генерируется только путём наблюдения за узлами. Эти наблюдатели задаются с помощью Zookeeper::exists и Zookeeper::get.

`Zookeeper::CHILD_EVENT`
  Произошло изменение в списке дочерних узлов

  Генерируется только путём наблюдения за списком дочерних узлов. Эти наблюдатели задаются с помощью Zookeeper::getChildren.

`Zookeeper::SESSION_EVENT`

  Сессия была потеряна

  Генерируется когда клиент потерял соединение с сервером, либо инициировал пересоединение.

`Zookeeper::NOTWATCHING_EVENT`

  Наблюдатель был удалён

  Генерируется сервером по разным причинам, например связанным с ограничением ресурса, и говорит о том, что дальнейшее наблюдение за узлом невозможно.

## Системные ошибки и ошибки на стороне сервера ZooKeeper

`Zookeeper::SYSTEMERROR`

  Никогда не выбрасывается сервером и может использоваться только для ограничения диапазона кодов ошибок. Все ошибки большие этой, но меньшие Zookeeper::APIERROR, являются системными ошибками.

`Zookeeper::RUNTIMEINCONSISTENCY`

  Обнаружена несогласованность во время выполнения.

`Zookeeper::DATAINCONSISTENCY`

  Обнаружена несогласованность данных.

`Zookeeper::CONNECTIONLOSS`

  Потеряно соединение с сервером.

`Zookeeper::MARSHALLINGERROR`

  Ошибка при маршалинге и демаршалинге данных.

`Zookeeper::UNIMPLEMENTED`

  Операция не реализована.

`Zookeeper::OPERATIONTIMEOUT`

  Превышение времени ожидания операции.

`Zookeeper::BADARGUMENTS`

  Некорректный аргумент.

`Zookeeper::INVALIDSTATE`

  Некорректный статус дескриптора zhandle.

`Zookeeper::NEWCONFIGNOQUORUM`

  Кворум новой конфигурации не подключён и не синхронизирован с лидером последней подтверждённой конфигурации. Попробуйте запустить переконфигурацию после подключения и синхронизации новых серверов.

  Доступно с версии ZooKeeper 3.5.0

`Zookeeper::RECONFIGINPROGRESS`

  Запрос переконфигурации во время работы другого процесса переконфигурации. В данный момент не поддерживается. Попробуйте повторить позже.

  Доступно с версии ZooKeeper 3.5.0

## ZooKeeper API Errors

`Zookeeper::OK`

  Все хорошо.

`Zookeeper::APIERROR`

  Никогда не выбрасывается сервером и может использоваться только для ограничения диапазона кодов ошибок. Все ошибки большие этой, являются ошибками API (значения меньшие данного означают системные ошибки).

`Zookeeper::NONODE`

  Узел отсутствует.

`Zookeeper::NOAUTH`

  Отсутствует аутентификация.

`Zookeeper::BADVERSION`

  Конфликт версий.

`Zookeeper::NOCHILDRENFOREPHEMERALS`

  Эфемерные узлы не должны иметь потомков.

`Zookeeper::NODEEXISTS`

  Узел уже существует.

`Zookeeper::NOTEMPTY`

  Узел имеет потомков.

`Zookeeper::SESSIONEXPIRED`

  Срок действия сессии истёк.

`Zookeeper::INVALIDCALLBACK`

  Задана некорректная функция обратного вызова.

`Zookeeper::INVALIDACL`

  Задан некорректный ACL.

`Zookeeper::AUTHFAILED`

  Неудачная аутентификация клиента.

`Zookeeper::CLOSING`

  ZooKeeper закрывается.

`Zookeeper::NOTHING`

  (не ошибка) Никакого ответа от сервера для обработки.

`Zookeeper::SESSIONMOVED`

  Сессия перемещена на другой сервер, таким образом операция проигнорирована.

`Zookeeper::NOTREADONLY`

  Запрос изменения статуса отправлен на сервер с режимом "только чтение".

`Zookeeper::EPHEMERALONLOCALSESSION`

  Попытка создать эфемерный узел в локальной сессии.

`Zookeeper::NOWATCHER`

  Невозможно найти наблюдателя.

`Zookeeper::RECONFIGDISABLED`

  Попытка произвести операцию переконфигурации в случае если она запрещена.

## Содержание

- Zookeeper::addAuth — Указывает учётные данные приложения
- Zookeeper::close — Закрывает обработчик zookeeper и освобождает любые ресурсы
- Zookeeper::connect — Создаёт дескриптор и запускает сеанс связи с Zookeeper-сервером
- Zookeeper::__construct — Создаёт дескриптор для общения с zookeeper
- Zookeeper::create — Создаёт синхронно узел
- Zookeeper::delete — Удаляет синхронно узел в объекте Zookeeper
- Zookeeper::exists — Синхронно проверяет наличие узла в zookeeper
- Zookeeper::get — Синхронно получает данные, связанные с узлом
- Zookeeper::getAcl — Синхронно получает ACL, связанный с узлом
- Zookeeper::getChildren — Синхронно выводит список потомков узла
- Zookeeper::getClientId — Возвращает идентификатор сессии клиента, действителен только в том случае, если соединения в настоящее время подключены (т.е. последнее состояние наблюдателя - ZOO_CONNECTED_STATE)
- Zookeeper::getConfig — Получает экземпляр ZookeeperConfig
- Zookeeper::getRecvTimeout — Возвращает время ожидания для сессии, действительный, только если соединения в настоящее время подключены (т.е. последнее состояние наблюдателя - ZOO_CONNECTED_STATE). Это значение может измениться после повторного подключения к серверу
- Zookeeper::getState — Получает состояние соединения zookeeper
- Zookeeper::isRecoverable — Проверяет, можно ли восстановить текущее состояние подключения ZooKeeper
- Zookeeper::set — Устанавливает данные, связанные с узлом
- Zookeeper::setAcl — Устанавливает ACL, связанный с узлом синхронно
- Zookeeper::setDebugLevel — Устанавливает уровень логирования для библиотеки
- Zookeeper::setDeterministicConnOrder — Включение/отключение рандомизации порядка конечных точек кворума
- Zookeeper::setLogStream — Устанавливает поток, который будет использоваться библиотекой для логирования
- Zookeeper::setWatcher — Устанавливает функцию наблюдателя

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open