Илья Рыбкин | 24.04.2013

Ограничения количества запросов в twitter и instagramm

Когда мы таки решились предоставить новый сайт  visitmurom.ru общественности, никто не ожидал, что посещаемость за считанные часы возрастет на 900 с лишним посетителей. Как результат — отвалился twitter и instagram. Оказалось, был превышен лимит запросов api с одного Access token. Правда в этом признался только instagram, twitter пытался уличить меня в подсовывании неправильного токина о_О. Кстати instagram еще и показал сколько же запросов было отправлено за прошедший час. Их оказалось 5040, при ограничении в 5000, пичалька — совсем чуть-чуть не уложились. 

Мной был предложен следующий вариант решения проблемы:

Так как ограничение — 5000 запросов в час, получается 83 с хвостиком запросов в минуту (piece of cake). Создаем несколько баз данных во избежание уж совсем большой избыточности. По-моему, для instagram достаточно таблицы с медиа данными (данными о картинке), таблицы с комментариями и таблицы с лайками. У twitter проще: достаточно, на мой взгляд, одной таблицы с данными о твите и пользователе. И «общей таблицы», в которой будут храниться тип и время добавления. 

Суть метода в том, что при загрузке страницы с данными социальных сетей, проверяем общую таблицу. Если с момента последней загрузки прошло больше, например, пяти минут, то очищаем таблицы twitter или instagram, в зависимости от типа хранящегося в общей таблице и записываем туда новые данные, а в общую таблицу записываем текущее время и тип записи (instagram или twitter). Таким образом в базе храниться минимальное количество, только актуальной информации.

Конечно, если хочется хранить более старые записи, можно обновлять данные в таблице и хранить определенное количество записей. Вот такое решение на скорую руку. Если есть комментарии, исправления или предложения, внизу ↓ форма комментариев!