Localzet Server and Cluster documentation

Tunnel: начало работы

Tunnel передаёт события между процессами Localzet Server. Стабильная линия 2.x рассчитана на Server 4; текущие исходники для Server 7 пока устанавливаются из dev-main:

composer require localzet/tunnel:dev-main

Поднимите сервер каналов

Создайте tunnel.php:

<?php

use localzet\Server;
use localzet\Tunnel\Server as TunnelServer;

require __DIR__ . '/vendor/autoload.php';

new TunnelServer('frame://127.0.0.1:2206');
Server::runAll();

Запустите его штатной CLI-командой Server (php tunnel.php start). Сокет привязан к loopback: для межузлового соединения задайте закрытый адрес и firewall ACL.

Подпишитесь и опубликуйте

В процессе приложения зарегистрируйте callback и подключите клиента:

use localzet\Tunnel\Client;

Client::connect('frame://127.0.0.1:2206');
Client::on('cache.updated', static function (mixed $data): void {
    // Update local process state from the event payload.
});

Client::publish('cache.updated', ['key' => 'item-1']);

Сначала вызовите connect(), затем зарегистрируйте событие: on() сразу отправляет серверу подписку. Вызывайте это один раз при старте процесса внутри event loop Server, а не на каждый запрос. По умолчанию wire format использует PHP serialization, но object deserialization на принимающей стороне выключена; передавайте скаляры и массивы. Оба процесса должны использовать один и тот же формат.

Публикация — доставка активным подписчикам, а не долговременная гарантия: состояние соединений и очереди находятся в памяти. Проверяйте reconnect, повторную доставку и shutdown. Дополнительные методы очереди и настройки сериализации описаны в API и эксплуатации.