Сохранение дескриптора cURL может позволить последующим передачам повторно использовать совместимые соединения из кэша. Но оно не может заставить прокси держать TCP-соединение открытым бесконечно.

Другая сторона может закрыть простаивающее соединение, сетевой путь может исчезнуть, а последующей передаче может понадобиться другой маршрут или туннель. Повторное использование — это клиентская оптимизация, зависящая от этих условий, а не гарантия доступности.

Для повторяющейся работы через одну политику прокси поддерживайте соответствующий дескриптор или кэш соединений multi-handle и избегайте параметров, которые намеренно запрашивают новые соединения или запрещают повторное использование, если только задача в них не нуждается. Проверяйте фактическое поведение передачи, прежде чем считать, что более короткий второй запрос доказывает повторное использование.

Остерегайтесь старых примеров PHP, где говорится, что соединение остаётся открытым «до curl_close». PHP документирует, что curl_close() не оказывает никакого эффекта с PHP 8.0 и устарел с PHP 8.5. Владение ресурсами и время жизни объектов нужно понимать в той версии PHP, которую вы развёртываете.

Таймер, отправляющий повторные запросы, чтобы держать прокси «тёплым», добавляет трафик и всё равно не может помешать удалённой стороне закрыть соединение. Предпочитайте обычное управление соединениями, ограниченные по времени запросы и чёткие правила повторных попыток обещанию, что одно прокси-соединение всегда выживет.

Похожие статьи