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
Форумы портала PHP.SU :: Версия для печати :: Как определить он-лайн пользователь или нет?
Форумы портала PHP.SU » PHP » Программирование на PHP » Как определить он-лайн пользователь или нет?

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

1. ShuvaL - 23 Февраля, 2011 - 13:01:43 - перейти к сообщению
Вход на сайт производится за счет PHP сессий.
Впринципе, можно было бы занасить значение онлайн в бд при входе и менять его при выходе, но при закрытий браузера значение останется он-лайн(

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

Кстати, всех мужчин с праздником, думаю их здесь боле чем три четвертых от всей массы)
2. grefon - 23 Февраля, 2011 - 13:07:38 - перейти к сообщению
Принцип в следующем: Вы устанавливаете срок актуальности сессии, например 3 минуты (180 сек). Когда пользователь заходит на сайт то в БД пишите что он онлайн и ставите время визита. Когда пользователь переходит на следующую страницу Вы обновляете значение в базе данных последнего визита на текущее время. А при Выводе "кто онлайн" просто делаете проверку с учетом актуальности в Вами установленные 180 сек, если пользователь не куда не ходил по сайту более 3 мин, значит он ушел с сайта, если ходил - значит онлайн.
3. Мелкий - 23 Февраля, 2011 - 13:08:28 - перейти к сообщению
Сохраняете не "онлайн", а время последнего обращения, удобнее unix time. Разницу между последним обращением и текущим временем выбираете сами, всё что больше - считать оффлайн.
4. ShuvaL - 23 Февраля, 2011 - 13:10:29 - перейти к сообщению
Огромное спасибо!)
Блин я нубас(
Все так просто оказалось) Улыбка
(Добавление)
А сколько оптимальное время неактивности посоветуйте?
5. grefon - 23 Февраля, 2011 - 13:16:25 - перейти к сообщению
А это в зависимости от посещаемости ресурса и ресурсов хостинга. Обычно человеку хватает 30 сек, чтобы посмотреть страницу (если там не очень много текста). Я бы поставил 3 минуты, и актуально и небольшая нагрузка.
6. ShuvaL - 23 Февраля, 2011 - 15:34:00 - перейти к сообщению
Создал поле типа DATETIME для каждого пользователя, а как теперь проверить что 3 минуты уже прошло? Функция какая ?
(Добавление)
Создал поле типа DATETIME для каждого пользователя, а как теперь проверить что 3 минуты уже прошло? Функция какая ? Или резать на массив и прибавлять три к минутам?
7. Мелкий - 23 Февраля, 2011 - 16:08:57 - перейти к сообщению
ShuvaL, поэтому я и посоветовал использовать unix time. Тогда запрос элементарен и для разработчика и для БД:
PHP:
скопировать код в буфер обмена
  1. mysql_query("select * from `users` where `last_act`>".(time()-180));

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

А для datetime - покурите http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]e-functions[dot]html
8. JustUserR - 23 Февраля, 2011 - 18:59:35 - перейти к сообщению
ShuvaL В качестве возможного варианта осуществления предполагамой задачи, заключающейся в определении состояния активности пользователя на целевом web-сайте, допустимо использование средств открытия канала постоянной транспортировки информационных полей в заданном элементном уровне трактования, основанного на инициализации и поддержании соединения с comet-сервером; преимуществом указанного подхода является возможность осуществления определения состояния активности пользователя с повышенной точностью, а также экономией сетевых ресурсов, ассоциированных с обеспечение инициализации нового TCP-соединения и выполнения на серверной стороне ответственного CGI-приложения
9. ShuvaL - 23 Февраля, 2011 - 19:15:01 - перейти к сообщению
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));
10. nextdrift - 23 Февраля, 2011 - 19:23:20 - перейти к сообщению
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));


ну и не будет. Ты ведь подсчитываешь кол-во строк.
11. ShuvaL - 23 Февраля, 2011 - 19:25:49 - перейти к сообщению
Стоп, извиняюсь, немножко не тот запрос) Радость
(Добавление)
nextdrift пишет:
ну и не будет. Ты ведь подсчитываешь кол-во строк.


Кол во строк 0

Решил уже проблему всем спасибо
12. JustUserR - 23 Февраля, 2011 - 19:54:30 - перейти к сообщению
ShuvaL В качестве конкректного варианта реализации требуемых средств, предназначенных для осуществления решения предполагаемой задачи на основании изложенной схемы, допустимо использование следующей технологии поддержки функционирования comet-сервера http://dklab[dot]ru/lib/dklab_realplexor/
13. ShuvaL - 23 Февраля, 2011 - 21:47:07 - перейти к сообщению
Что бы не создавать новую тему)

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

А как быть если мне нужно вывести друзей онлайн?
Дрязья хранятся в одной таблице, а время последней активности в другой.
14. ShuvaL - 25 Февраля, 2011 - 19:03:47 - перейти к сообщению
Может искать их в цикле?
15. ALEN - 25 Февраля, 2011 - 20:12:53 - перейти к сообщению
ShuvaL
В SELECT запросе есть такая штука называется WRITE пишешь много БУКАВ и все работает!!!

 

Powered by ExBB FM 1.0 RC1