Ускорение работы curl и php с vk.api
Сегодня я попытаю счастье ещё раз написать полезную статью для сообщества.
Недавно где-то недели 2 назад, у меня с моим другом возникла идея одного сервиса на базе контакта. Немного обсудив идею, я сразу же ринулся в бой с кодом. Реализовал авторизацию, запросы к api, но одно мне не давало покоя. Очень медленная скорость работы. Сегодня я нашёл решение, казалось бы очевидное, но не всегда.
И так, если интересно, то прошу под кат.
У меня есть свой облачный сервер, на centos 6. Я долго ломал голову и гуглил в чём же может быть причина. Сегодня мне ответил на это wget.
Как проверить есть ли у вас такая же проблема? Достаточно в консоли набрать
На это wget, казалось бы, должен вывалить 302 или страницу, но этого не произошло у меня. И тут я понял причину того что так долго заставляло cUrl соединятся. Имя врага ipv6.
Да именно так, cUrl как я понимаю, пере подключается на ходу с ipv6 на ipv4. И это может вызывать тормоза, жуткие тормоза, особенно если не указан CURLOPT_CONNECTTIMEOUT.
Теперь кульминация, как избавиться от проблемы? Есть несколько способов:
Теперь у меня другая проблема, упор в 3 запроса на секунду, раньше этого было не заметно, теперь запросы к api выполняются моментально.
PS. Надеюсь, в следующих более обширных статьях я смогу рассказать о нашем сервисе и каких ещё проблемах пришло столкнуться при его создании.
С Уважением, специально для Хабра сообщества.
Недавно где-то недели 2 назад, у меня с моим другом возникла идея одного сервиса на базе контакта. Немного обсудив идею, я сразу же ринулся в бой с кодом. Реализовал авторизацию, запросы к api, но одно мне не давало покоя. Очень медленная скорость работы. Сегодня я нашёл решение, казалось бы очевидное, но не всегда.
И так, если интересно, то прошу под кат.
У меня есть свой облачный сервер, на centos 6. Я долго ломал голову и гуглил в чём же может быть причина. Сегодня мне ответил на это wget.
Как проверить есть ли у вас такая же проблема? Достаточно в консоли набрать
Wget –O – http://api.vk.com/
На это wget, казалось бы, должен вывалить 302 или страницу, но этого не произошло у меня. И тут я понял причину того что так долго заставляло cUrl соединятся. Имя врага ipv6.
Да именно так, cUrl как я понимаю, пере подключается на ходу с ipv6 на ipv4. И это может вызывать тормоза, жуткие тормоза, особенно если не указан CURLOPT_CONNECTTIMEOUT.
Теперь кульминация, как избавиться от проблемы? Есть несколько способов:
- скомпилировать php с директивой –disable-ipv6
- curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
- добавить запись в /etc/hosts
Теперь у меня другая проблема, упор в 3 запроса на секунду, раньше этого было не заметно, теперь запросы к api выполняются моментально.
PS. Надеюсь, в следующих более обширных статьях я смогу рассказать о нашем сервисе и каких ещё проблемах пришло столкнуться при его создании.
С Уважением, специально для Хабра сообщества.
0 комментариев