Есть вот такой сервис: http://www.recipdonor.com/help/api
Суть: мы хотим узнать всякую SEO-хуйню про сайт (тиц-пиар и т.д.). Отправляем ему запрос, он возвращает ID сессии, далее мы по этому ID долбимся, проверяя, закончил ли он собирать данные - на стороне сервиса на это уходит несколько секунд.
В моем приложении нужно получать разные наборы данных про разные сайты в разных ситуациях, и по-разному их использовать.
Придумайте за меня архитектуру с таким поведением:
1. появилась задача для проверки (юзер нажал на какую-то кнопку)
2. приложение ее куда-то записало - в формате "что проверять - для каких сайтов - что потом с этим делать (колбэк)"
if ($some_shit) {
$task_id = rds_add_task($sites, $params, 'my_fucking_callback');
}
3. подсистема, взаимодействующая с сервисом, об этом узнала, отправила нужные запросы сервису, дождалась, пока он вернет данные, и вызвала нужный колбэк
4. нужный колбэк кладет полученные данные в БД приложения
function my_fucking_callback($task_result, $task_id) {
// делаем что-то с $task_result
rds_kill_task($task_id);
}
5. пока это все происходит, юзер может видеть прогресс - "задача в очереди - задача выполняется - готово"
$.ajax({url:'/rds_task_state?task='+task_id, success: function() {…}})
Собственно нифига не понятно с пунктом 3. Клиент, который работает с сервисом, я накодил - дурацкое дело не хитрое. Теперь думаю, как организовать подсистему обработки задач. А именно:
- как ловчее хранить задачи, в файлах, в бд, еще где-то?
- как обрабатывать - по идее должен крутиться демон, который, обнаружив задачу, запускает воркера - но хз как это реализовать
- как отслеживать и обрабатывать ситуации, когда дохнут воркеры или сам демон
- как рассчитать, какое кол-во задач в единицу времени оно сможет обрабатывать
- нуитд
Дайте пинка в каком-нибудь направлении, может почитать чо можно про это. Спасибо. Извините за сумбур, час ночи чо делать.