ФорумПрограммированиеPHP для идиотов → Получение большого количества хуйни в фоновом режиме

Получение большого количества хуйни в фоновом режиме

  • Коля Дубр

    Сообщения: 45 Репутация: N Группа: Адекваты

    Spritz Май 3, 2012, 2:13 п.п.

    Привет, профи!

    Есть вот такой сервис: 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. Клиент, который работает с сервисом, я накодил - дурацкое дело не хитрое. Теперь думаю, как организовать подсистему обработки задач. А именно:
    - как ловчее хранить задачи, в файлах, в бд, еще где-то?
    - как обрабатывать - по идее должен крутиться демон, который, обнаружив задачу, запускает воркера - но хз как это реализовать
    - как отслеживать и обрабатывать ситуации, когда дохнут воркеры или сам демон
    - как рассчитать, какое кол-во задач в единицу времени оно сможет обрабатывать
    - нуитд

    Дайте пинка в каком-нибудь направлении, может почитать чо можно про это. Спасибо. Извините за сумбур, час ночи чо делать.
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Май 3, 2012, 2:40 п.п., спустя 27 минут 7 секунд

    сумбур
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Май 3, 2012, 3:03 п.п., спустя 22 минуты 56 секунд

    gearman?
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Май 3, 2012, 3:07 п.п., спустя 4 минуты 26 секунд

    ретвитнул три раза по случаю

Пожалуйста, авторизуйтесь, чтобы написать комментарий!