За последние 24 часа нас посетили 17596 программистов и 1593 робота. Сейчас ищут 1498 программистов ...

Общение сервера со скриптом

Тема в разделе "Решения, алгоритмы", создана пользователем DmbITpo, 25 янв 2009.

  1. DmbITpo

    DmbITpo Активный пользователь

    С нами с:
    25 янв 2009
    Сообщения:
    2
    Симпатии:
    0
    Не знал как правильно назвать тему.
    В общем идея такова.
    Предположим у меня есть таймер, который считает оставшееся время до какого-то события. Например до этого события осталось 1 минута. И _каждый_ пользователь должен видеть сколько времени осталось. Далее любой из пользователей может нажать на кнопку и увеличить таймер на 1 минуту (т.е. оставшееся время увеличится). И именно в эту секунду _все_ пользователи должны увидеть, что таймер продлился ещё на минуту.
    Вот у меня вопрос, как это можно реализовать?
    У меня была идея, хранить время события, по наступлению которого таймер остановится, в базе данных и кажду секунду проверять, не изменилось ли значение. Но это получается 1 запрос к БД каждую секунду от каждого пользователя. Мне кажется это очень плохо.
    Что ещё можно сделать?
    Заранее спасибо за ответ!
     
  2. _alex

    _alex Активный пользователь

    С нами с:
    29 янв 2007
    Сообщения:
    43
    Симпатии:
    0
    JavaScript
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Так не получиться.
    Если извратиться, то можно ежесекундный запрос к серверу, но сервер упадет от большого кол-ва пользователей, о чем вы и пишете. Но по-другому не получится.
     
  4. ATI

    ATI Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Недавно решал подобную задачу, решением стало как сказал Kreker, каждые n-секунд обращатся к серверу.
     
  5. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    1. затея конечно же глупая. Много раз подумать прежде чем за нее бороться

    2. каждый раз делать запрос на сервер не обязательно
    можно в iframe открыть документ
    что то типа того:
    PHP:
    1. <?
    2. echo str_repeat(' ', 1024); // for ie
    3. while(true) {
    4.    echo "<script>parent.updateServerTime(".time().")</script>\n";
    5.    flush();
    6.    usleep(500000);'
    7. }
    3. если сильно надо не нагружая сервер то решать на C, C++ без баз данных, файлов, etc...
     
  6. DmbITpo

    DmbITpo Активный пользователь

    С нами с:
    25 янв 2009
    Сообщения:
    2
    Симпатии:
    0
    Ti, а что этот код делает? я не понимаю ....


    ну, каждые n-секунд, я бы давно сделал. но тут вся загвоздка в том, что бы обновление происходило, так сказать, в режиме реального времени..


    может как-то ajax подключить?
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    А Вы как хотели? Каждую секунду обновлять страницу?
     
  8. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Выводит в iframe код, который взаимодействует со страницей. При этом соединение с клиентом не обрывается.
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    http://javascript.ru/ajax/server-push/overview

    ATI
    Я был не совсем прав =) Век живи -- век учись. Конечно, браузер не заставишь с сервера к нему обращаться, но не закрывать соединение можно, оказывается. Читал уже давно про "бесконечный iframe", да забыл. На сайте еще несколько вариантов описано.