Добрый день.
Вдохновившись статьёй
https://habr.com/ru/post/184302/, я решил переделать пару классов, которые разработаны для интеграции сайта с 1с. Суть простая: когда пользователь ввёл на сайте все данные, на сервер 1С отправляется 5 запросов для создания/проверки некоторых сущностей.
До "оптимизации": Для каждого из 5 запросов выполнялся curl_init перед запросом и curl_close после запроса.
После "оптимизации": Сделал класс Singleton (или типа того), который всегда возвращает один и тот же curl-хэндлер. Затем каждый из классов-запросов ставит свой url и некоторые ставят post-fields (а другие запросы get), и отправляют запросы. И в конце конечно ничего не уничтожаем, так как по идее после выполнения всё должно очиститься само.
Запросы используют инфу друг из друга, так что параллелить их нет смысла.
Засекал время, оно немного уменьшилось, но всё таки я до конца не понял, получилось ли у меня создать постоянное соединение, или нет. Поясните, кто разбирается. Я использовал опцию CURLOPT_VERBOSE чтобы всё записывалось, но не уверен, что правильно читаю логи.
Лог curl до оптимизации -
https://codepen.io/Aris96/pen/jOwqLER
Лог curl после оптимизации -
https://codepen.io/Aris96/pen/RwgaZWx
IP сервера заменил на ***host***
И ещё беспокоит, что я не использую опции CURLOPT_FORBID_REUSE и CURLOPT_TCP_KEEPALIVE. Пробовал использовать, но ничего не изменилось. Не понимаю, нужно ли их устанавливать и какие у них дефолтные значения. На данный момент без url и post-fields установка параметров у меня выглядит так:
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, AbstractRequest::ONE_C_LOGIN . ':' . AbstractRequest::ONE_C_PASSWORD);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_STDERR, $file);
curl_setopt($ch, CURLOPT_VERBOSE, true);