Автоматическое обновление, когда новый пользователь выходит в сеть - PullRequest
2 голосов
/ 29 мая 2010

У меня есть таблица в базе данных, которая включает всех активных пользователей. Затем у меня есть список пользователей, который нуждается в обновлении, чтобы увидеть, кто является последними пользователями онлайн. Каков наилучший способ справиться с этим? Список пользователей - это всегда только тот, кто находится в таблице active_users. Спасибо за чтение.

Ответы [ 4 ]

3 голосов
/ 29 мая 2010

AJAX

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

Возможно, вы захотите кэшировать этот список на некоторое время на вашем сервере , если у вас много пользователей, запрашивающих его постоянно.

Или, если список длинный, или если вы решите использовать большую разметку HTML со списком, вы также можете регулярно опросить ваш сервер , чтобы проверить, есть ли обновления (кэшированные. ..) список с момента последнего обновления клиентом списка. Ответ будет простым истиной или ложью, и клиенту потребуется запрашивать новый список только после его изменения.


мета-тег обновления

Вы также можете использовать метатег обновления , либо для обновления всей страницы, либо для iframe, если вы не возражаете против iframes.

Обновление через одну минуту:

<meta http-equiv="refresh" content="60" />

Или с URL:

<meta http-equiv="refresh" content="60;url=http://site.com/list.php?counter=1" />

Обновление вручную

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


Другие соображения

Как указано JoeGeeky в комментариях, для соображений производительности и пропускной способности вам может потребоваться реализовать счетчик, который ограничивает максимальное количество загрузок списка пользователей. Это действительно для тегов обновления Ajax и Meta. В javascript вы можете просто иметь переменную, увеличивающуюся при каждой загрузке списка, а в случае мета-обновления тега вы можете добавить счетчик в URL как переменную get.

Также эти три подхода не исключают друг друга , но должны быть объединены : используйте Ajax для людей с активированным JavaScript, мета-обновление iframe в теге noscript в качестве запасного варианта для тех, у кого отключен JavaScript (как указано в stagas ), а также кнопка или ссылка для ручное обновление после максимального числа перезагрузок списка был достигнут.

2 голосов
/ 29 мая 2010

Если ваш список пользователей короткий, например, вы просто отображаете последних пяти пользователей, я бы пошел с простым опросом с помощью Ajax к PHP-скрипту, который возвращает эти данные.

Вы можете настроить опрос в соответствии с вашими потребностями,

$(document).ready(function () {
    function refreshUserlist () {
        $.ajax({
            url: "user_list.php",
            success: function (data) {
                // code to refresh your website with the info out of data

                setTimeout(refreshUserlist, 5000);
            }
        });
    }

    refreshUserlist();
});
1 голос
/ 29 мая 2010

Самый простой способ, о котором я могу думать, это то, что вы можете создать простую страницу php, которая перечисляет данные, и использовать функцию jQuery .load (), чтобы загрузить html-ответ этого php в div

.

$ ( "# DIVID") нагрузка ( "активный-users.php");.

0 голосов
/ 29 мая 2010

Создайте php-скрипт для получения списка active_users и возврата списка <ul>. Затем используйте jQuery и setInterval(), чтобы получить этот список с $.ajax() и заменять список каждые 1-2 минуты или около того на $('#active_user_list').html(new_list_data). Вот как это может выглядеть (не проверено):

setInterval(function() {
   $.ajax({ url: 'script_to_fetch_active_users_list.php', success: function(new_list_data) {
      $('#active_user_list').html(new_list_data);
   } });
}, 1000*120);

Сценарий php зависит от вас ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...