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 и ограничениях.

