Pull to refresh

Ускорение работы curl и php с vk.api

Доброго времени суток Хабр. Сегодня я попытаю счастье ещё раз написать полезную статью для сообщества.

Недавно где-то недели 2 назад, у меня с моим другом возникла идея одного сервиса на базе контакта. Немного обсудив идею, я сразу же ринулся в бой с кодом. Реализовал авторизацию, запросы к api, но одно мне не давало покоя. Очень медленная скорость работы. Сегодня я нашёл решение, казалось бы очевидное, но не всегда.

И так, если интересно, то прошу под кат.

У меня есть свой облачный сервер, на centos 6. Я долго ломал голову и гуглил в чём же может быть причина. Сегодня мне ответил на это wget.

Как проверить есть ли у вас такая же проблема? Достаточно в консоли набрать

Wget –O – http://api.vk.com/

На это wget, казалось бы, должен вывалить 302 или страницу, но этого не произошло у меня. И тут я понял причину того что так долго заставляло cUrl соединятся. Имя врага ipv6.

Да именно так, cUrl как я понимаю, пере подключается на ходу с ipv6 на ipv4. И это может вызывать тормоза, жуткие тормоза, особенно если не указан CURLOPT_CONNECTTIMEOUT.

Теперь кульминация, как избавиться от проблемы? Есть несколько способов:
  1. скомпилировать php с директивой –disable-ipv6
  2. curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
  3. добавить запись в /etc/hosts

Я выбрал второй, но проверил догадку почти третим.

Теперь у меня другая проблема, упор в 3 запроса на секунду, раньше этого было не заметно, теперь запросы к api выполняются моментально.

PS. Надеюсь, в следующих более обширных статьях я смогу рассказать о нашем сервисе и каких ещё проблемах пришло столкнуться при его создании.
С Уважением, специально для Хабра сообщества.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.