Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как определить он-лайн пользователь или нет?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
ShuvaL
Отправлено: 23 Февраля, 2011 - 13:01:43
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Вход на сайт производится за счет PHP сессий.
Впринципе, можно было бы занасить значение онлайн в бд при входе и менять его при выходе, но при закрытий браузера значение останется он-лайн(

Как такое можно реализовать, что бы с точностью поти как в вконтакте?

Кстати, всех мужчин с праздником, думаю их здесь боле чем три четвертых от всей массы)
 
 Top
grefon
Отправлено: 23 Февраля, 2011 - 13:07:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Принцип в следующем: Вы устанавливаете срок актуальности сессии, например 3 минуты (180 сек). Когда пользователь заходит на сайт то в БД пишите что он онлайн и ставите время визита. Когда пользователь переходит на следующую страницу Вы обновляете значение в базе данных последнего визита на текущее время. А при Выводе "кто онлайн" просто делаете проверку с учетом актуальности в Вами установленные 180 сек, если пользователь не куда не ходил по сайту более 3 мин, значит он ушел с сайта, если ходил - значит онлайн.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Мелкий Супермодератор
Отправлено: 23 Февраля, 2011 - 13:08:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Сохраняете не "онлайн", а время последнего обращения, удобнее unix time. Разницу между последним обращением и текущим временем выбираете сами, всё что больше - считать оффлайн.


-----
PostgreSQL DBA
 
 Top
ShuvaL
Отправлено: 23 Февраля, 2011 - 13:10:29
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Огромное спасибо!)
Блин я нубас(
Все так просто оказалось) Улыбка
(Добавление)
А сколько оптимальное время неактивности посоветуйте?
 
 Top
grefon
Отправлено: 23 Февраля, 2011 - 13:16:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




А это в зависимости от посещаемости ресурса и ресурсов хостинга. Обычно человеку хватает 30 сек, чтобы посмотреть страницу (если там не очень много текста). Я бы поставил 3 минуты, и актуально и небольшая нагрузка.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
ShuvaL
Отправлено: 23 Февраля, 2011 - 15:34:00
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Создал поле типа DATETIME для каждого пользователя, а как теперь проверить что 3 минуты уже прошло? Функция какая ?
(Добавление)
Создал поле типа DATETIME для каждого пользователя, а как теперь проверить что 3 минуты уже прошло? Функция какая ? Или резать на массив и прибавлять три к минутам?
 
 Top
Мелкий Супермодератор
Отправлено: 23 Февраля, 2011 - 16:08:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




ShuvaL, поэтому я и посоветовал использовать unix time. Тогда запрос элементарен и для разработчика и для БД:
PHP:
скопировать код в буфер обмена
  1. mysql_query("select * from `users` where `last_act`>".(time()-180));

(time())-180 - unix time на 3 минуты (180 секунд) раньше этого момента времени.

А для datetime - покурите http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

(Отредактировано автором: 23 Февраля, 2011 - 16:09:42)



-----
PostgreSQL DBA
 
 Top
JustUserR
Отправлено: 23 Февраля, 2011 - 18:59:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




ShuvaL В качестве возможного варианта осуществления предполагамой задачи, заключающейся в определении состояния активности пользователя на целевом web-сайте, допустимо использование средств открытия канала постоянной транспортировки информационных полей в заданном элементном уровне трактования, основанного на инициализации и поддержании соединения с comet-сервером; преимуществом указанного подхода является возможность осуществления определения состояния активности пользователя с повышенной точностью, а также экономией сетевых ресурсов, ассоциированных с обеспечение инициализации нового TCP-соединения и выполнения на серверной стороне ответственного CGI-приложения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ShuvaL
Отправлено: 23 Февраля, 2011 - 19:15:01
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Unknown column ' session_time' in 'where clause'
(Добавление)
Все ошибку исправил, сервер почему-то не не выводит людей онлайн)
PHP:
скопировать код в буфер обмена
  1. mysql_query("SELECT COUNT(*) FROM friends WHERE idf='$myrow[id]' and type='2' and 'session_time'>".(time()-180));
 
 Top
nextdrift
Отправлено: 23 Февраля, 2011 - 19:23:20
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




ShuvaL пишет:
Unknown column ' session_time' in 'where clause'


ну всё написано ))

Неизвестный столбец. Проверьте написание, могли допустить опечатку. (вы ведь создали его?)
(Добавление)
ShuvaL пишет:
Unknown column ' session_time' in 'where clause'
(Добавление)
Все ошибку исправил, сервер почему-то не не выводит людей онлайн)
PHP:
скопировать код в буфер обмена
  1. mysql_query("SELECT COUNT(*) FROM friends WHERE idf='$myrow[id]' and type='2' and 'session_time'>".(time()-180));


ну и не будет. Ты ведь подсчитываешь кол-во строк.
 
 Top
ShuvaL
Отправлено: 23 Февраля, 2011 - 19:25:49
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Стоп, извиняюсь, немножко не тот запрос) Радость
(Добавление)
nextdrift пишет:
ну и не будет. Ты ведь подсчитываешь кол-во строк.


Кол во строк 0

Решил уже проблему всем спасибо
 
 Top
JustUserR
Отправлено: 23 Февраля, 2011 - 19:54:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




ShuvaL В качестве конкректного варианта реализации требуемых средств, предназначенных для осуществления решения предполагаемой задачи на основании изложенной схемы, допустимо использование следующей технологии поддержки функционирования comet-сервера http://dklab[dot]ru/lib/dklab_realplexor/


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ShuvaL
Отправлено: 23 Февраля, 2011 - 21:47:07
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Что бы не создавать новую тему)

Все те же пользователи он-лайн.

А как быть если мне нужно вывести друзей онлайн?
Дрязья хранятся в одной таблице, а время последней активности в другой.
 
 Top
ShuvaL
Отправлено: 25 Февраля, 2011 - 19:03:47
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Может искать их в цикле?
 
 Top
ALEN
Отправлено: 25 Февраля, 2011 - 20:12:53
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




ShuvaL
В SELECT запросе есть такая штука называется WRITE пишешь много БУКАВ и все работает!!!
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB