За последние 24 часа нас посетил 17561 программист и 1604 робота. Сейчас ищут 956 программистов ...

Количество онлайн пользователей [Готовое решение]

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

  1. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Задача - определить количество пользователей не создавая таблицы/файлы.
    Решение - стандартный механизм сессий

    PHP:
    1.  
    2. <?php
    3.  
    4. function GetUsersOnline(){
    5.     $SessionDir = session_save_path();
    6.     $Timeout = 60 * 3;
    7.     if ($Handler = scandir ($SessionDir)){
    8.         $count = count ($Handler);
    9.         $users = 0;
    10.        
    11.         for ($i = 2; $i < $count; $i++){
    12.             if (time() - fileatime ($SessionDir . '/' . $Handler[$i]) < $Timeout){
    13.                 $users++;
    14.             }
    15.         }
    16.                            
    17.         return $users;
    18.     } else {
    19.         return 'error';
    20.     }
    21. }
    22.  
    23. echo 'Online: ' . GetUsersOnline();
    24.  
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Проверить работу можно на www.akhundzade.ru (справа блок)
     
  3. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Человек?
    В русском языке числа, оканчивающиеся на 2, 3 и 4 имеют окончание А за исключением десятичного разряда (12, 13, 14).
    Это правило так же действительно, как и единственное число любого исчисляегомо существительно для чисел, оканчивающихся на еденицу (21 ложкА, 22 ложкИ).
     
  4. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Apple
    Я написал скрипт для отображения количество онлайн посетителей, а не для морфологии. Смысл замечания?
     
  5. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Anyway, сделал ещё и морфологическую привязку. Спасибо.
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Видел где-то у 440Hz морфологию как часть OOPS. Надо будет поискать :)
     
  7. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А причем тут морфология?
    Это, по-моему, элементарно и должно обязательно быть учтено.
    Ведь "мы" пишем умные скрипты, которые не только работают по-человечески, но ещё так же и выглядят.
     
  8. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Apple
    Понимаешь, задача стоит по другому. Элементарно или нет, это две разные задачи. Абсолютно разные, не смотря на то что для человека они кажутся одним и тем же.
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Если у тебя в папке накопится 1000 сессий, то время выполнения данного скрипта вырастет значительно.
     
  10. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Kreker
    1000 человек онлайн? Дожить бы до такого счастливого момента :)
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Почему тысяча? Ты сам сказал, что у тебя некоторые сессии с мая живут. Вот если бы с мая к тебе зашло 1000 человек...
     
  12. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Time: 0.000123023986816 sec.
     
  13. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Kreker
    Подумаю над механизмом убийства сессий старше определенного периода. Всё равно авторизация только в админке.
     
  14. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    ??
    Я сейчас зашел на сайт, а мне показало 2 юзера. Это что, 2 админа на сайте?
     
  15. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Kreker
    Нет :) Я же написал в аську - вынес session_start в index.php и разделил сессии сайта от сессии админки :)
     
  16. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Elkaz, а вывести список имен тех, кто сейчас на форуме? Как тут, на главной странице форума. Имхо, лучше это делать это или через базу, или через отдельный сессионный механизм с записью при каждом запросе.
     
  17. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    TheShock
    Форум не популярен ещё.
    Для конкретной задачи мне нужен именно простой механизм без БД и файлов
     
  18. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    довольно дурацкое расположение
     
  19. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    antonn
    Идеи?
     
  20. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    расположить ее привычно справа, всю навигацию
     
  21. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    antonn
    Навигация слева нужна тогда, когда имеет смысл акцентрировать на ней внимание. В моём случае содержимое по весу больше навигации. Поэтому всё справа :)
     
  22. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    в твоем случае совершенно не хочется разбираться что вообще где есть, и страничка закрывается. Навигация справа - это почти стандарт, не обязательно это имено акцентирование внимания, просто привычно.
     
  23. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Может, слева все-таки? )
     
  24. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    [vs]
    Мы все поняли о чём он :)

    З.ы
    Те у кого есть MSIE - подскажите, что не так в вёрстке (чую что трабл в margin-left, float) и контейнер с содержимым идёт внизу...
     
  25. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    [vs]
    зарапортовался :)