@NikHaker
/

Почему зависают curl запросы?

У меня есть сервер на Ubuntu и приложение на php, которое делает запросы к vk api по https через curl. Сам vk api вряд ли может зависать, т. к. на странице https://vk.com/dev/health время выполнения любых методов измеряется миллисекундами. Но довольно часто (хоть и без какой-то закономерности) мои curl запросы начинают зависать и обрываться по таймауту (5 секунд).
Вот такие ошибки возвращает curl:
Resolving timed out after 2527 milliseconds
Запросы отправляю с такими опциями:
curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/<имя метода, которому обращаюсь>');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['param1'=>$value, ...])); // параметры для vk api
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

Последнюю строку добавил после прочтения статьи на хабре, но это не помогло.
Уже не знаю, что и думать. Может с сертификатами какие-то проблемы у меня?
  • Вопрос задан
  • 2215 просмотров
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Похоже, у вас кэширование DNS-ответов не используется и DNS-сервер периодически тупит.
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Эта ошибка (единственное место с такой формулировкой текста, в исходнике PHP не встречается, только проксируется из libcurl) прилетает по достижении таймаута, когда соединение в статусе CURLM_STATE_WAITRESOLVE - то есть всё ещё ждёт ответ DNS.
Проверяйте используемые системой DNS
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 15:31
70000 руб./за проект
25 апр. 2024, в 15:26
15000 руб./за проект
25 апр. 2024, в 15:13
3000 руб./за проект