За последние 24 часа нас посетили 15812 программистов и 1668 роботов. Сейчас ищут 797 программистов ...

Пользователи онлайн

Тема в разделе "Прочие вопросы по PHP", создана пользователем Inoi, 29 апр 2009.

  1. Inoi

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

    С нами с:
    4 авг 2008
    Сообщения:
    52
    Симпатии:
    0
    Адрес:
    Волгоград
    Есть таблица users в ней колонка online, после авторизации в колонки online прописывается значение 1, после выхода разрушается сессия и в колонке online выставляется 0.
    Но если браузер просо закрывается то колонка Online остается 1(что не есть хорошо).
    Как сделать, чтобы при закрытие браузера разрушалась сессия и при этом был запрос в базу данных на обновление данных?

    Единстенное до чего додумался - сделать через крон, чтобы каждые допустим 5 минут у все значения колонки Online выставлялись 0, и на каждой странице зделать обновление значение online=1 этого пользователя. т.е если пользователь находится на сайте то при открытие каждой странице ему выставляется online=1, если 5 минут бездействия то 0. Привильно ли это будет? и сильноли это будет нагружать сервер и базу?
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Зачем cron?
    Можно вручную в задать время обновления и при заходе посетителя, при его добавлении, обновлять статистику.
    Где-то на форуме была тема обработки онлайн статистики.
     
  3. Cron

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

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Inoi
    Сделайте так: при каждом действии пользователя заносите в базу данных время этого действия. Разлогирование - 0. Для того, чтобы выбрать юзеров он-лайн, выберите всех пользователей у которых в этом столбике разница с текущим временем не превышает 5 минут.
     
  4. Inoi

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

    С нами с:
    4 авг 2008
    Сообщения:
    52
    Симпатии:
    0
    Адрес:
    Волгоград
    Cron
    Спасибо, так тому и быть...
     
  5. kas1e

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

    С нами с:
    6 апр 2009
    Сообщения:
    280
    Симпатии:
    0
    а можно вообще базу не тягать, если показывать просто посетителей, в том числе и без регистрации оналай
     
  6. R3VoLuT1OneR

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

    С нами с:
    16 апр 2009
    Сообщения:
    16
    Симпатии:
    0
    Ну давай, свое предложение в студию)
     
  7. meganosets3

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

    С нами с:
    4 май 2009
    Сообщения:
    16
    Симпатии:
    0
    В принципе это стандартный способ.
    Только не нужно при каждом действии заносить данные в базу, зачем так жестоко по отношению к базе :lol:
    Данные в базу можно заносить раз в минуту например.
    Нужно хранить в куках последнее время занесения данных в базу, и каждый раз делать проверку, если срок не превысил минуту.

    Данные вбиваем REPLACE INTO (user_id,date,online) VALUES(77777,sysdate(),1);