Найти - Пользователи
Полная версия: подгрузка данных по готовности через AJAX
Начало » Web » подгрузка данных по готовности через AJAX
1
alphaville
Всем доброе утро!

Делаю систему, которая на запрос пользователя рассылает несколько запросов и по приходу резальтатов выдаёт пользователю страницу. Запросы выполняются разное время (10 - 100 секунд). И пользователь получает результат только когда придёт последний, самый долгий запрос.

Хочу сделать так: Пользователю получает AJAX-ом результаты по мере готовности. Тоесть первый результат от получит уже через 10 секунд. А остальные как будут готовы.

Теперь о том как это реализовать:

1) Со стороны браузера всё вроде просто. Отправляет запрос, а потом раз в 5 секунд опрашивает нет ли ответа. Если что есть - то Яваскрипт это размещает на странице. Опрашивает до тех пор, пока с ответом не придёт done = true.

2) Реализация со стороны сервера вызывает главные вопросы. Наверное надо каждому пользователю вешать в куки некий id-запроса, с которым он будет стучаться раз в 5 секунд.

А где хранить данные, когда они уже готовы, чтобы потом выдать их пользователю? Класть в БД?

Тоесть я вижу это так: Пользователь сделал запрос. Ставим пользователю куки с id. Код, который выполняет запрос, начинает крутиться отдельной нитью, где каждые отдельные подзапросы ещё отдельными нитями крутятся. По прихожу результатов кладём их в БД. Javascript со стороны пользователя раз в 5 секунд стучится на скрипт, который по id пользователя смотрит в БД, не появилось ли там для пользователя результатов. Если появилось - выдаёт.

Подскажите пожалуйста, таким ли образом это делается? Первый раз делаю подобное. Спасибо.
Ferroman
Выглядит нормально, я бы так и сделал.
kmet
может http://en.wikipedia.org/wiki/Comet_%28programming%29 ?
ZioN
alphaville
Делаю систему, которая на запрос пользователя рассылает несколько запросов и по приходу резальтатов выдаёт пользователю страницу. Запросы выполняются разное время (10 - 100 секунд). И пользователь получает результат только когда придёт последний, самый долгий запрос.
Почитайте про long polling, ссылку Вам уже указали.
pioner
“будет стучаться раз в 5 секунд”-это и есть поллинг, большего не прочитаете. метод такой.
Во Flash есть сокеты, а JS с Flash взаимодействует. Аяксеры этим не хотят пользоваться, хотя идея на поверхности.

У меня вопрос - что вы называете нитью. Вижу понятие “нить” не в первые, им программеры оперируют, но почему-то у питонистов его слышу часто (читаю). Это сродни потоку или жаргон или особая технология?
Андрей Светлов
Гляньте в англо-русском словаре перевод для “thread”. Тут уж скорее “поток” вопросы должен вызывать :)
pioner
Андрей Светлов
Гляньте в англо-русском словаре перевод для “thread”. Тут уж скорее “поток” вопросы должен вызывать :)
Да, говорила мама “учи английский” …
Все говорят “потоки”, питонисты-“нити”.
Питонисты говорят “словарь”, остальным понятен “ассоциативный массив”. А к чему это? Только с толку сбивает, имхо. Сори за флейм.

Вопрос: есть смысл с потоками связываться на виртуальных серверах? Сервер сам по себе многопоточный и пользовательские потоки увеличат нагрузку на процессор, на что хостеры могут хмуро посмотреть. Как считаете?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB