Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » подгрузка данных по готовности через AJAX [RSS Feed]

#1 Окт. 22, 2009 06:41:28

alphaville
От:
Зарегистрирован: 2009-07-17
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

подгрузка данных по готовности через AJAX

Всем доброе утро!

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

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

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

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

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

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

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

Подскажите пожалуйста, таким ли образом это делается? Первый раз делаю подобное. Спасибо.



Офлайн

#2 Окт. 22, 2009 14:31:07

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

подгрузка данных по готовности через AJAX

Выглядит нормально, я бы так и сделал.

Офлайн

#3 Окт. 22, 2009 17:25:50

kmet
От:
Зарегистрирован: 2009-10-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

подгрузка данных по готовности через AJAX

Офлайн

#4 Окт. 22, 2009 19:01:49

ZioN
От:
Зарегистрирован: 2007-07-12
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

подгрузка данных по готовности через AJAX

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



Офлайн

#5 Окт. 27, 2009 08:46:47

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

подгрузка данных по готовности через AJAX

“будет стучаться раз в 5 секунд”-это и есть поллинг, большего не прочитаете. метод такой.
Во Flash есть сокеты, а JS с Flash взаимодействует. Аяксеры этим не хотят пользоваться, хотя идея на поверхности.

У меня вопрос - что вы называете нитью. Вижу понятие “нить” не в первые, им программеры оперируют, но почему-то у питонистов его слышу часто (читаю). Это сродни потоку или жаргон или особая технология?



Офлайн

#6 Окт. 27, 2009 09:42:42

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

подгрузка данных по готовности через AJAX

Гляньте в англо-русском словаре перевод для “thread”. Тут уж скорее “поток” вопросы должен вызывать :)



Офлайн

#7 Окт. 27, 2009 11:17:00

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

подгрузка данных по готовности через AJAX

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

Вопрос: есть смысл с потоками связываться на виртуальных серверах? Сервер сам по себе многопоточный и пользовательские потоки увеличат нагрузку на процессор, на что хостеры могут хмуро посмотреть. Как считаете?



Офлайн

  • Начало
  • » Web
  • » подгрузка данных по готовности через AJAX[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version