PHP Conference Nagoya 2025

Класс Zookeeper

(PECL zookeeper >= 0.1.0)

Введение

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

Обзор класса

class Zookeeper {
/* Методы */
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 getState(): int
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
/* Константы */
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 AUTH_FAILED_STATE = -113;
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 SYSTEMERROR = -1;
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 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 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 — Устанавливает функцию наблюдателя
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top