Установка и первый сервер
Примеры на этой странице соответствуют текущей версии исходников в репозитории. Перед установкой проверьте версию Composer-пакета и сравнение версий.
Требования
- PHP CLI 8.1 или новее;
ext-json— обязательное расширение;- Composer — для установки библиотеки и dev-зависимостей;
- Unix
pcntlиposix— для supervisor и нескольких worker-процессов.
На Windows доступен однопроцессный режим. Дополнительные event-loop и session backends подключаются отдельно. Подробности — в матрице совместимости.
Получить исходники текущей версии
Чтобы запустить примеры этой документации, клонируйте репозиторий и установите зависимости:
git clone https://github.com/localzet/Server.git
cd Server
composer install
Для потребительского приложения composer require localzet/server выбирает доступную Composer-версию согласно stability и ограничениям проекта. Проверяйте фактически установленную версию командой composer show localzet/server.
Минимальный HTTP-сервер
Создайте server.php:
<?php
use localzet\Server;
use localzet\Server\Connection\TcpConnection;
use localzet\Server\Protocols\Http\Request;
use localzet\Server\Protocols\Http\Response;
require __DIR__ . '/vendor/autoload.php';
$server = new Server('http://127.0.0.1:8080');
$server->name = 'example';
$server->onMessage = static function (TcpConnection $connection, Request $request): void {
$connection->send(new Response(200, [
'Content-Type' => 'application/json; charset=utf-8',
], json_encode(['path' => $request->path()], JSON_THROW_ON_ERROR)));
};
Server::runAll();
Запустите и проверьте:
php server.php start
curl -i http://127.0.0.1:8080/hello
Команда управления использует тот же entry file приложения. Не запускайте start из другого PHP-файла: в нём должны быть созданы нужные экземпляры Server до вызова Server::runAll().
Следующие шаги
- Для локального просмотра команд:
php server.php help. - Для оценки возможностей event loop:
php server.php capabilities --json. - Для graceful завершения отправьте
SIGTERMпроцессу master либо выполнитеphp server.php stop -g. - Для сетевого сервиса настройте bind-адрес, лимиты соединений, таймауты, пользователя процесса и TLS согласно операционному руководству.

