Localzet Server and Cluster documentation

HTTP Client: API и эксплуатация

Текущая ветка исходников требует PHP 8.2+, ext-curl, ext-json, Localzet Server ^7.0, Localzet PSR-7 ^3.0 и psr/http-message:^2.0. Опубликованный v2.0.2 относится к Server 4.2; перед установкой сверяйте манифест stable tag и текущий манифест. Ветка dev-main не является стабильным релизом.

Методы запроса

  • Client::get($url, $headers = [], $success = null, $error = null) отправляет GET.
  • Client::post($url, $data = [], $headers = [], $success = null, $error = null) отправляет POST form data.
  • Client::request($url, $method = 'GET', $data = [], $headers = [], $options = []) задаёт общий вариант запроса.
  • ParallelClient::push($url, $options) и batch($set) накапливают запросы; await($errorThrow = false) ожидает завершения и возвращает результаты.

При переданных callbacks запрос завершается асинхронно: ответ доступен только в callback успеха, ошибки передаются в callback ошибки. На поддерживаемом Unix event loop вызов request() без callback может приостановить текущую Fiber и вернуть результат, но для кода приложения предпочтительно явно обрабатывать оба callback. HTTP status code сам по себе не считается транспортной ошибкой.

Пул и эксплуатация

$client = new \localzet\HTTP\Client([
    'max_conn_per_addr' => 32,
    'keepalive_timeout' => 15,
    'connect_timeout' => 5,
    'timeout' => 20,
]);

Опции пула относятся к каждому адресу; задавайте конечные таймауты и ограничение соединений под свой трафик. Они заменяют соответствующие значения по умолчанию, а вложенные настройки объединяются по ключам. Не блокируйте callback долгой работой, редактируйте credentials перед логированием и не отключайте проверку TLS в production. Закрытие пула, redirect policy, отмена и streaming требуют проверки на точной версии кода и целевой среде.

В репозитории нет сопровождаемого набора сквозных тестов для сетевых edge cases. Перед использованием проверьте TLS trust chain, редиректы, response body, медленный/оборванный upstream и закрытие соединений. Не закрепляйте dev-ветку в production до выпуска совместимого стабильного тега.