cloud-castle/curl — HTTP-клиент для PHP на cURL: PSR-18, промисы, пул, кэш, SSE и защита от SSRF
Обзор Composer-пакета cloud-castle/curl для PHP 8.1–8.5 — HTTP-клиента на базе cURL, в котором собрано то, что у аналогов разнесено по разным пакетам: текучий API и PSR-18, промисы, параллельный пул curl_multi с неблокирующим tick() для event loop, HTTP/2 и HTTP/3, общий пул соединений curl_share, HTTP-кэш (RFC 9111), ограничение частоты, ретраи с backoff и Retry-After, Server-Sent Events, запись и воспроизведение HAR, ротация прокси, потоковые загрузка и выгрузка файлов. Безопасность включена по умолчанию: защита от SSRF на каждом хопе редиректа, маскирование секретов в ошибках и логах, строгий TLS, лимит размера ответа. В зависимостях только пакеты cloud-castle и интерфейсы PSR. В видео: • установка и требования к окружению; • быстрый старт: клиент с базовым URI и шаблонами URI (RFC 6570); • текучий построитель: тело, query, заголовки, Basic/Bearer/Digest/NTLM/WSSE, таймауты; • разбор ответа: JSON, XML, YAML, NEON и автоопределение формата, тайминги; • клиент PSR-18 и промисы (then, all, settle, any); • параллельный пул с окном конкурентности и выдачей результатов по мере готовности; • неблокирующий tick() для ReactPHP, Revolt/Amp и Swoole, HTTP/2 server push; • общий пул соединений curl_share, HTTP/2 и HTTP/3; • потоковая загрузка в файл, докачка, прогресс, потоковая выгрузка; • сегментная параллельная загрузка и multipart/form-data; • ретраи с экспоненциальным backoff, джиттером и Retry-After, безопасные редиректы; • middleware: HTTP-кэш поверх PSR-16, rate limit, ротация прокси, хуки, история, журнал PSR-3; • Server-Sent Events, IDN-домены и транспорт без ext-curl; • безопасность: SSRF, маскирование секретов, mTLS, пиннинг ключа; • тестирование: MockHandler, запись и воспроизведение HAR, экспорт в команду curl; • архитектура: неизменяемые объекты, конвейер middleware, сменные обработчики; • производительность и память — честные замеры против Guzzle, Symfony HttpClient, Buzz, php-http, php-curl-class и Requests; • качество кода: 891 тест, покрытие 100 %, Infection MSI 100 %, PHPStan max, Psalm 1; • честные минусы и рекомендации по применению. Пакет: https://packagist.org/packages/cloud-castle/curl Исходники: https://gitverse.ru/cloud-castle/curl Документация: https://cloud-castle.gitverse.site/curl/ Команда установки: composer require cloud-castle/curl Таймкоды: 00:00 Введение 01:08 Зачем ещё один HTTP-клиент 02:21 Установка 03:23 Быстрый старт 04:26 Текучий построитель запроса 05:30 Разбор ответа 06:37 PSR-18 и промисы 07:37 Параллельный пул 08:36 Неблокирующий tick() для event loop 09:33 Общий пул соединений curl_share 10:38 Потоковые передачи 11:39 Сегментная загрузка и multipart 12:40 Ретраи и перенаправления 13:40 Middleware: кэш, rate limit, прокси 14:46 SSE, IDN и транспорт без ext-curl 15:46 Безопасность по умолчанию 16:55 Отладка и тестирование 17:53 Архитектура 18:59 Производительность и память 20:05 Качество кода 21:08 Итоги #PHP #cURL #HTTP #PSR18 #Composer #cloudcastle
Название:
cloud-castle/curl — HTTP-клиент для PHP на cURL: PSR-18, промисы, пул, кэш, SSE и защита от SSRF
Категория:
Технологии и интернет