Живые часы обратного отсчета с Django и sql? - PullRequest
0 голосов
/ 10 июля 2011

Если я сделаю часы обратного отсчета в реальном времени, такие как ebay, как мне это сделать с django и sql? Я предполагаю, что запуск функции в django или в sql снова и снова каждую секунду для проверки того, что время будет ужасно неэффективным.

Это даже правдоподобная стратегия?

Или они так делают: Когда страница загружается, она берет конечное значение datetime с сервера и запускает часы обратного отсчета JavaScript на этом компьютере пользователя? Если это так, как вы делаете часы обратного отсчета с JavaScript? И как я смогу удалить / переместить данные после истечения срока без загрузки страницы пользователя? Или пользователю абсолютно необходимо загрузить страницу, чтобы проверить лимит времени для создания эффективных часов обратного отсчета?

Ответы [ 2 ]

2 голосов
/ 10 июля 2011

Я не думаю, что этот вопрос действительно имеет какое-либо отношение к SQL - за исключением того, что вы можете получить время истечения из SQL.Что вас действительно волнует, так это просто отображение времени ожидания в браузере в реальном времени, верно?

Очевидно, что самый простой способ - просто отправить счетчик «оставшихся секунд» на страницу, либо при начальной загрузке.или как часть запроса AJAX, затем используйте Javascript для отображения таймера и обновляйте его каждую секунду текущим значением.Я бы предпочел использовать счетчик «оставшихся секунд», а не «дату окончания», потому что вы не можете доверять правильной настройке часов браузера - но вы, вероятно, можете доверять ему для правильного отсчета секунд.

Если вы не доверяете Javascript или часам клиента, чтобы быть точными, вы можете периодически повторно отправлять текущее значение «оставшихся секунд» в браузер через AJAX.Я бы не стал делать это каждую секунду, может быть, каждые 15 или 60 секунд.

Что касается удаления / перемещения данных по истечении времени, вам нужно будет делать все это в Javascript.

Я не уверен на 100%, что ответил на все ваши вопросы, но ваши вопросы кажутся немного рассеянными.Если вам нужно больше разъяснений по теории операций, пожалуйста, спросите.

0 голосов
/ 10 июля 2011

Я также столкнулся с той же проблемой некоторое время назад.

Прежде всего ваша проблема не связана ни с django, ни с sql. Это общая концепция, и ее нелегко реализовать из-за нагрузки на сервер.

Мне пришло в голову одно решение - сохранить время начала процесса в базе данных. Когда кто-то просит вас посмотреть оставшееся время, прочитайте его из базы данных, вычтите текущее время и сервер за это время и в вашем браузере инициализируйте вашу функцию javascript с этим значением и обратным отсчетом, как 15 секунд. После этого выполните ту же операцию с AJAX, не ожидая запроса пользователя.

Однако в зависимости от вашего приложения могут быть и другие реализации. Если вы подробно объясните свою заявку, могут быть другие решения.

Например, если вы внедрили вопросник с ограниченным временем, то для каждого отправленного ответа вы должны передать вычисленное значение javascript для этой секунды.

...