Localzet Server and Cluster documentation

HTTP Client: начало работы

Текущий исходный код адаптирован к Localzet Server 7 и пока распространяется как dev-main. Опубликованный стабильный тег v2.0.2 требует Server 4.2, поэтому не смешивайте его с этим примером.

composer require localzet/http:dev-main

Клиент использует event loop Server: вызывайте его из работающего процесса Server, а не из обычного короткого PHP CLI вызова.

<?php

use localzet\HTTP\Client;
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');
$client = new Client([
    'max_conn_per_addr' => 16,
    'keepalive_timeout' => 15,
    'connect_timeout' => 5,
    'timeout' => 10,
]);

$server->onMessage = static function (TcpConnection $connection, Request $request) use ($client): void {
    $client->get(
        'https://example.com/health',
        success: static function ($response) use ($connection): void {
            $connection->send(new Response(200, ['Content-Type' => 'text/plain'], (string) $response));
        },
        error: static function (Throwable $error) use ($connection): void {
            $connection->send(new Response(502, [], 'Upstream request failed'));
        },
    );
};

Server::runAll();

Для проверки передайте локальный upstream URL и выполните запрос к http://127.0.0.1:8080. Обработайте оба callback: сетевые ошибки приходят отдельно от HTTP-ответов, поэтому в callback успеха проверяйте также status code. Не возвращайте приватный текст исключения клиенту и не записывайте секретные заголовки в логи.

Перед production-развёртыванием зафиксируйте проверенный commit/branch, проверьте TLS и redirect поведение и выполните интеграционные проверки на используемых версиях Server и PSR-7. Подробности — в API и ограничениях.