Дескрипторы cURL в PHP и повторное использование прокси-соединений
Отличайте сохранение кэша соединений libcurl от гарантии, что TCP-соединение через прокси останется живым.
Сохранение дескриптора cURL может позволить последующим передачам повторно использовать совместимые соединения из кэша. Но оно не может заставить прокси держать TCP-соединение открытым бесконечно.
Другая сторона может закрыть простаивающее соединение, сетевой путь может исчезнуть, а последующей передаче может понадобиться другой маршрут или туннель. Повторное использование — это клиентская оптимизация, зависящая от этих условий, а не гарантия доступности.
Для повторяющейся работы через одну политику прокси поддерживайте соответствующий дескриптор или кэш соединений multi-handle и избегайте параметров, которые намеренно запрашивают новые соединения или запрещают повторное использование, если только задача в них не нуждается. Проверяйте фактическое поведение передачи, прежде чем считать, что более короткий второй запрос доказывает повторное использование.
Остерегайтесь старых примеров PHP, где говорится, что соединение остаётся открытым «до curl_close». PHP документирует, что curl_close() не оказывает никакого эффекта с PHP 8.0 и устарел с PHP 8.5. Владение ресурсами и время жизни объектов нужно понимать в той версии PHP, которую вы развёртываете.
Таймер, отправляющий повторные запросы, чтобы держать прокси «тёплым», добавляет трафик и всё равно не может помешать удалённой стороне закрыть соединение. Предпочитайте обычное управление соединениями, ограниченные по времени запросы и чёткие правила повторных попыток обещанию, что одно прокси-соединение всегда выживет.