За последние 24 часа нас посетили 20332 программиста и 1713 роботов. Сейчас ищут 1903 программиста ...

Вопрос от чайника - опять про сессии.

Тема в разделе "Вопросы от блондинок", создана пользователем DHJ, 21 май 2008.

  1. DHJ

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

    С нами с:
    21 май 2008
    Сообщения:
    4
    Симпатии:
    0
    Всем привет, я тут новичок. Поиск пользовал - не слишком помог.
    Ситуация:
    Есть авторизация на стандартном механизме сессий. При удачной авторизации - пишу в БД "1" в поле "is_logged" для пользователя вошедшего на страничку.
    Если он штатно выйдет (нажмет кнопку "Выход") - то я его разавторизую и запишу в БД "0" в поле "is_logged".
    Вопрос:
    Как записать туда же "0" при том что пользователь закрыл браузер, либо вышел покурить на пару часов (то есть по тайм-ауту).
    Есть ли пример решений? Как это автоматизировать?

    PS: нужно для того, чтобы другие пользователи зашедшие на страничку могли узнать информацию о других авторизированных пользователях и пообщаться с ними( что-то вроде чата).
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    В поиск. Обсуждалось.
     
  3. DHJ

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

    С нами с:
    21 май 2008
    Сообщения:
    4
    Симпатии:
    0
    Хоть с какими словами в поиск подскажите? Я уже там час сижу параллельно! Только после этого запостил. Туплю наверно! :)
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
  5. DHJ

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

    С нами с:
    21 май 2008
    Сообщения:
    4
    Симпатии:
    0
    Сессии работают. Пользователь вводит логин/пароль и входит на требуемую страницу. При этом в БД ставится 1. БД - используется другими пользователями. Они при заходе смотрят поля "is_logged" по БД и определяют список залогиненных пользователей. Они же не могут получить данные о сессиях запущенных от имени других пользователей на сервере или все таки могут?
    Спасибо за внимание к теме - вопрос на данный момент для меня важный в плане понимания взаимодействия с сервером. Насколько я понимаю сейчас - как только скрипт отработал и страница загружена - при простом закрытии браузера на сервер ничего не передается - как реализовать механизм обновления БД при неактивности пользователей?
     
  6. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    в таблице создать поле с меткой времени и кто отсутствует более определенного кол-ва времени, значит ушел
     
  7. dAllonE

    dAllonE Guest

    Вльдемар +1 .

    Ну и раз в какой то время запускать кроном скрипт и удалять лишние строки, что бы таблицу online не забивать...
     
  8. DHJ

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

    С нами с:
    21 май 2008
    Сообщения:
    4
    Симпатии:
    0
    Спасибо Вльдемар. как раз хотел примерно так и сделать, но до cron еще не добрался (хотя все равно придется).
    Параллельно нашел еще то, что наверно мне больше подходит - класс-оболочку над стандартным механизмом сесиий. Он обрабатывает сессии на серверной стороне не в виде текстовых файлов - а в виде записей в необходимой БД. В принципе - то что нужно.
    Всем спасибо - тему можно закрыть?
     
  9. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    зачем крон? В таблице где юзвери содержатся создать поле и обновлять его каждый раз когда пользователь ходит по ссылкам
     
  10. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Любой кто обращается к списку залогиненных - автоматом запускает функцию "чистки".
    То есть, Вльдемар +1 :)
     
  11. dAllonE

    dAllonE Guest

    Угу... И станет ресурс тот популярным и заполонят его юзвери аки Чингисханова рать... и выстроятся Update к таблице users в ряд нескончаемый... и рухнет наше сервер БД аки спелое плод с ветви дерева плодоносящего в период осени...

    И возопит программист: "Че за нах?" и ответят ему: "а давайте таблицу online держать в памяти"...
     
  12. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Зачем чистка?
    для выбора списка зологиненых можно запрос типа (у мя так сделано)

    [sql]
    SELECT * FROM Users WHERE last_visit > (time - "15 munute")
    [/sql]
     
  13. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Вльдемар
    Сколько народу у тебя будет через неделю в базе? Через месяц? Через год? :) А главное, зачем?
     
  14. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Johnatan
    Народа не много, 300+ человек. Количество растет медленно.
     
  15. dAllonE

    dAllonE Guest

    Вльдемар, как только станет 2000+ онлайн, начнутся проблемы.....
     
  16. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Johnatan, dAllonE, чёй-то я не понимаю. Запрос
    [sql]SELECT name FROM Users WHERE last_visit > (time - "15 munute")[/sql]
    С индексом на last_visit, по идеи, ничего сложного не делает. Вычислить дату, сравнить с last_visit. Каждые 15 минут обновлять таблицу... А, вот тут может быть глюк. Если человеков 3000 он-лайн, то в течение 15 минут будет +3000 апдейтов базы. Правильно понимаю?
     
  17. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Ну когда там будет 2000+ онлайн, тогда уже будут другие технологии. )))
     
  18. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    при нагрузке в 300 (за какой период?) уже можно вешать на крон.