Очередь запросов к API на PHP

DeLighter

Постоялец
Регистрация
2 Мар 2013
Сообщения
36
Реакции
8
Добрый день. Есть сайт, который разрешает к его API 10 запросов в секунду. Как сформировать очередь из запросов, при условии, что запросы могут генерировать разные пользователи?
 
Есть два пути, либо юзать прокси, либо выстраивать очередь тасков по принципу FIFO. Но вряд ли пользователям понравится долго ожидать результат, а это обязательно случится, если количество пользователей будет достаточно большим.
 
Прокси не прокатит, т.к. доступ к API даётся на один IP. Можно подробнее про второй вариант?
 
Самая простая модель:

Пользователи отправляют запросы и сидят, ждут. Запрос записывается в БД.
Некий скрипт раз в секунду получает 10 строк из БД и отправляет на API (лучше меньше - раз в 2 секунды 8 запросов, чтобы не было конфликта в счётчиках).
Получаем ответ, записываем в БД, помечаем запрос выполненным.
Исходный скрипт видит, что запрос выполнен и возвращает результат пользователю
Пользователь получает результат по средствам AJAX или перезагрузки страницы.

Очевидная проблема - очередь может достигать часа и более...
 
Самая простая модель:

Пользователи отправляют запросы и сидят, ждут. Запрос записывается в БД.
Некий скрипт раз в секунду получает 10 строк из БД и отправляет на API (лучше меньше - раз в 2 секунды 8 запросов, чтобы не было конфликта в счётчиках).
Получаем ответ, записываем в БД, помечаем запрос выполненным.
Исходный скрипт видит, что запрос выполнен и возвращает результат пользователю
Пользователь получает результат по средствам AJAX или перезагрузки страницы.

Очевидная проблема - очередь может достигать часа и более...
Такая схема достойна права на жизнь. Вообщем-то я предполагал, что может быть существуют какие-нибудь библиотеки или серверные утилиты для этих целей, в которых бы база данных не была задействована?
 
Под PHP такого нет. PHP - это онлайновый язык программирования...

Аналогичную твоей задаче часто решают на Hadoop, можешь почитать, но это целый стак технологий и языков.
 
Назад
Сверху