Что будет если не закрыть соединение curl_close()?

435
31 января 2017, 23:57

Через ajax выполняю php-код, с помощью curl авторизуюсь и выполняю код. Таких ajax-запросов может быть очень много за день. Что может случиться, если я не буду использовать curl_close()?

Answer 1

По завершении работы скрипта все ресурсы будут закрыты автоматически.

Если не вызвать curl_close, то соединение останется открытым и доступным для других keep-alive запросов из этого скрипта соответственно в пределах времени, сколько удалённая сторона готова ждать другие запросы. Поэтому если вы сделали запрос, получили ответ - и больше вам от удалённой машины ничего не нужно - лучше вызовите curl_close, чтобы не держать зря соединение.

А вот если вам к одной удалённой машине необходимы выполнить несколько запросов подряд - то вполне имеет смысл делать сначала один curl_init и затем переиспользовать этот дескриптор. Вызов curl_close явно запрещает переиспользовать соединение и будет создаваться новое соединение.

Т.е. код вида

$ch = curl_init();
foreach(...) {
    curl_setopt_array($ch, ...);
    $result = curl_exec($ch);
    ...
}
curl_close($ch);

Позволит сэкономить некоторое время, затрачиваемое на установку TCP соединения, а для HTTPS - и на согласование TLS, что ещё интереснее.

Релевантная заметка на хабрахабре

READ ALSO
Как перехватить кнопку “назад” браузера?

Как перехватить кнопку “назад” браузера?

На странице используется JavaScript, пользователь может изменить вид страницыПри переходе по ссылке на другую страницу того же сайта и затем...

707
Как отсечь градиент

Как отсечь градиент

В общем думал как реализовать освещение в 2d игре, нашел вот такой замечательный пример http://codepenio/ilovepixel/pen/qBjCH

411
java script событие

java script событие

Когда я нажимаю на кнопку создается элемент с текстом и резко исчезает

429