1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Вывод юзеров онлайн.

Тема в разделе "Оффтопик", создана пользователем W_0rld, 24 апр 2016.

  1. Автор темы
    W_0rld

    W_0rld Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    World
    Сделал себе чат в движке, и решил что надо сделать список юзеров которые находятся на сайте.

    Вопрос как удалить из таблицы тех юзеров которые не заходили 2 минуты?
     
  2. Kela-4D

    Kela-4D Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Kelatyh
    Можно сделать:
    бд создать колонку onltime в которой будет timestamp в которой будет время онлайна. И когда игрок заходит то время обновляется(Добавляя +5мин). А выводить из базы тех людей у которые onltime > time();
     
  3. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
    Может поможет http://www.softtime.ru/scripts/online.php
     
  4. Автор темы
    W_0rld

    W_0rld Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    World
    Интересные запросы, попробую их.

    PHP:
    $db->query("DELETE FROM `LiteOnline` WHERE `time` < NOW() -  INTERVAL '10' MINUTE");
    if (
    $dbgroup == true)
    {
    $result_online $db->query("SELECT `user` FROM `LiteOnline` WHERE `user`='$user' LIMIT 1");
    $row_online $result_online->fetch();
    $your_online $row_online['user'];
    if (empty(
    $your_online))
    {
    $db->query("INSERT INTO `LiteOnline` (`user`,`time`) VALUES ('$user', NOW())");
    }
    }
    $result $db->query("SELECT `user` FROM `LiteOnline` ORDER BY `id` DESC LIMIT 30");
    while (
    $row $result->fetch())
    {
    $online_user $row['user'];
    $online .= "<tr><a href='/user/$online_user'>$online_user</a></tr>";
    }
    if (empty(
    $online))
    {
    $online '<tr>Никого.</tr>';
    }
     
    Последнее редактирование: 24 апр 2016
  5. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Написан неправильно вообще. Удаляй и переписывай.
     
  6. Cames

    Cames Старожил Пользователь

    Баллы:
    153
    Skype:
    sky_meg
    Фигня полная. А держать в таблице онлайн - вообще идиотская идея.
     
  7. Автор темы
    W_0rld

    W_0rld Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    World
    У меня пока нормальных идей нет, может предложешь как не по идиотски сделать?
    Первый набросок, и то с ошибкой. Поправил чуток.
    Кстати мне кажется или мой таймаут на JS работает только один раз? Кто знает как исправить?
    Код:
    setTimeout(chat_update, 30000);
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    В нете этих чатов валом, выбирай и смотри реализацию.
     
  9. Автор темы
    W_0rld

    W_0rld Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    World
    Я люблю сам писать ). Тем более что я уже сделал чат.
    Пофиксил таймаут, забыл же что он выполняется только один раз и что-бы он постоянно обновлялся надо что-бы он сам себя запускал.
    Код:
    function timeout()
    {
    setTimeout(function() {chat_update();timeout()}, 30000)
    }
     
  10. Cames

    Cames Старожил Пользователь

    Баллы:
    153
    Skype:
    sky_meg
    setInterval не пробовал запускать?
    Чат вообще на сокетах делать надо или, на худой конец, keep-alive запросами.
    Посмотри как сделано в нормальных движках
    P.S. если все же не хочешь смотреть на нормальные решения и хочешь говнокодить сам, то на слое middleware записывай в базу последний заход и по нему собирай весь онлайн.
     
    Последнее редактирование: 25 апр 2016
  11. Автор темы
    W_0rld

    W_0rld Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    World
    Подскажите как можно на JS или JQuery сделать проверку если поменялся html-код, то проигрывать звук.
    Точнее просто скажите как выловить что новый код отличается от старого*?
    Естествинна, но если ты сидишь на хостингере или на ещё каком-то хосте, то там сокетов не будет, и я не вижу смысла если в чате будет не много сообщений ибо та же загрузка новостей из базы равна загрузке сообщений из чата, тем более что переодичность не большая, можно сделать лимит на всякий случай, выводить ошибку афк-юзерам.

    А по поводу идиотства ты так и не ответил что идиотского, естественно у движков которые пишет целая команда код будет лучше, и я считаю что мой код ещё более-менее в отличии от некоторых кодиров например этого форума.
     
  12. Cames

    Cames Старожил Пользователь

    Баллы:
    153
    Skype:
    sky_meg
    1) document on change
    2) сохранять состояния и сравнивать изменения
    После этого
    и этого
    ты как раз попадаешь под звание "кодир".
    Я уже молчу о нормальной документации и написании тестов. И это мы еще твой код не смотрели.
     
  13. Автор темы
    W_0rld

    W_0rld Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    World
    Ну че могу сказать, мнение ваше, под конец скажу что это были временные решения, и я всегда когда есть свободное время доделываю и укорачиваю код.

    Остается теперь мне узнать почему после хостингера у меня звание "кодир", если я там даже не сижу :D .
     
  14. hobabibs

    hobabibs Новичок Пользователь

    Баллы:
    16
    Имя в Minecraft:
    bhtyujnbfyu8
    Вангую, автор будет хранить код в переменной и сравнивать на наличие изменений.
     
  15. Автор темы
    W_0rld

    W_0rld Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    World
    Ну это первое что приходит в голову. Правда пока забил на это.
     

Поделиться этой страницей