[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кто онлайн?
Страницы: 1, 2
N0ob
Решил заделать у себя на сайте модуль кто онлайн. Но есть проблемки. Как же без них :) Ну да ладно, ближе к теме. В таблице с пользователями у каждого юзера хранится последнее время обращения к странице в формате:
2013-05-07 02:02:02

Так вот, допустим сейчас время:
2013-05-07 02:05:00

Так вот как мне вытащить юзера, что бы время между текущей и которая в БД было примерно 3 минуты? и что бы дата с сегоднешней совпадала :)
Был вариант вытащить у всех пользователей время последнего обращения к странице и разбить дату на массив(отдельно секунды, минуты, часы....) и потом подбирать с помощью time(), но слишком ресурсоемко.
kaww
select * from user where last_visit > DATE_SUB(NOW(),  INTERVAL 3 MINUTE)
N0ob
kaww спасибки. Надо научится работать с датой в MySQL запросах smile.gif
N0ob
kaww а интервал в три минуты будет нормально или мало/много?
kaww
N0ob
,зависит от поведения пользователей на сайте. Если на одной странице находятся дольше трех минут (например читают статью), то логичнее увеличить время
З.Ы. обычно пользователь считается онлайн ~15мин с момента последней активности.
Игорь_Vasinsky
Цитата
З.Ы. обычно пользователь считается онлайн ~15мин с момента последней активности.

точнее сказать - аура пользователя растворяется в дебрях сайта за 15 минут biggrin.gif biggrin.gif biggrin.gif

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
N0ob
kaww запрос у меня храмает.
SELECT `avatar`, `id`, `name`, `lastname` FROM `users` WHERE `id` IN '2' AND `lastvisit` > DATE_SUB(NOW(), INTERVAL 3 MINUTE) LIMIT 6
kaww
из текста ошибки по-любому можно сделать вывод, что проблема тут WHERE `id` IN '2', потому что нужно WHERE `id` = 2 или WHERE `id` IN (2)
Игорь_Vasinsky laugh.gif
dron4ik
я использую mktime() и варчар...

WHERE last>".(mktime()-(15*60))."

_____________
Ex3m.com.ua — Активный образ жизни
Игорь_Vasinsky
этож не правильно.. для дат DATETIME и есть такие прелести как DATE_SUB(NOW(), INTERVAL 3 MINUTE

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
kaww
dron4ik
,тогда уж лучше int т.к. по интам быстрее работает. и на пхп тоже есть функции преобразования дат и конечно же DateTime
Игорь_Vasinsky
не - нужно сразу решить на моменте проектирования что будет чаще востребовано DATETIME или TIMESTAMP - чтобы потом не увязнуть в конверторах

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dron4ik
kaww
сори... инт... гдето увидел варчас. и так и написал)
Игорь_Vasinsky
+1. я конкрутно использую поле только для етого, та и вывести дату последнего визита не составит труда

echo date("d-m-Y H:i", $row['last']);

_____________
Ex3m.com.ua — Активный образ жизни
Valick
dron4ik, а дату последнего визита из "будущего" ниразу не видели?
Или у вас "песочница" только для местных?

_____________
Стимулятор ~yoomoney - 41001303250491
N0ob
kaww извини, позабыл синтаксис rolleyes.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.