За последние 24 часа нас посетили 18192 программиста и 1651 робот. Сейчас ищут 1628 программистов ...

как узнать если пользователи сейчас на сайте??????,

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

  1. eu1985

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

    С нами с:
    17 мар 2010
    Сообщения:
    9
    Симпатии:
    0
    как узнать если пользователи сейчас на сайте

    хотя бы подскажите с чего начать

    и поставить значок online или offline

    заранее спасибо
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Начать пожалуй лучше с поиска по форуму и по гуглу.
     
  3. eu1985

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

    С нами с:
    17 мар 2010
    Сообщения:
    9
    Симпатии:
    0
    искал но ничего нету
     
  4. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Врете.
    Первая же ссылка даже с примерами кода.
     
  5. eu1985

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

    С нами с:
    17 мар 2010
    Сообщения:
    9
    Симпатии:
    0
    тогда дайте пожалуйста ссылку
     
  6. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Хм. А в гугле забанили?
    Тему в поиск и вперед.
     
  7. eu1985

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

    С нами с:
    17 мар 2010
    Сообщения:
    9
    Симпатии:
    0
    как узнать что session_id закрыта (умерла)???????????
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Давно писал, очень давно ... две жизни назад.
    У меня была такая таблица:

    [sql]CREATE TABLE `apple_online` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `sid` char(40) NOT NULL,
    `ip` char(32) NOT NULL,
    `extern` int(10) unsigned DEFAULT NULL,
    `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
    ) ENGINE=MEMORY AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;[/sql]

    Объясняю:
    1. id [тут всё понятно]
    2. sid [идентификатор сессии]
    Со вторым не всё так гладко.
    Со стороны РНР выглядело это так:
    PHP:
    1. <?php
    2.  
    3. ini_set("session.hash_function", 1);
    4. ini_set("session.hash_bits_per_character", 4);
    5.  
    6.  
    7. ?>
    3. ip [MD5 хеш IP адреса пользователя]
    4. extern [внешний ID]
    Это обычно NULL если юзер не залогинен, иначе туда пишем его ID и при выборке джойном его достаём из другой таблицы.
    5. time [время, когда юзер был отмечен активным последний раз]


    Обновление шло по принципу "раз в 15 минут".
    Считал так: если в остатке текущей минуты ноль (т.е деление без остатка), идет обновление, иначе выборка из кеша.

    Пример выборки при наличии таблицы apple_users:
    [sql]SELECT u.`name`, u.`group`
    FROM `apple_online` AS `a`
    LEFT JOIN `apple_users` AS `u`
    ON (a.`extern` = u.`id`);[/sql]

    Структура таблицы apple_users (упрощенная до нельзя):

    [sql]CREATE TABLE `apple_users` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(45) NOT NULL,
    `group` tinyint(3) unsigned NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;[/sql]

    Со стороны РНР считали num_rows (мне как-то не хотелось делать запрос ради COUNT, а UNION не катит тут).
    Потом уже формируем и отсеиваем.
    Если заранее нет пользователей, то там ещё проще - никаких джойнов, один единственный COUNT =)

    В случае с подсчетом привелегий пользователей мы это делаем на стороне РНР, никакого запроса для GROUP BY, поскольку мы всё равно делаем перебор и "расфасофку" по группам.
     
  9. favorit

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

    С нами с:
    9 июн 2010
    Сообщения:
    1
    Симпатии:
    0
    Спасибо за информацию....