Решил заделать у себя на сайте модуль кто онлайн. Но есть проблемки. Как же без них :) Ну да ладно, ближе к теме. В таблице с пользователями у каждого юзера хранится последнее время обращения к странице в формате:
2013-05-07 02:02:02
Так вот, допустим сейчас время:
2013-05-07 02:05:00
Так вот как мне вытащить юзера, что бы время между текущей и которая в БД было примерно 3 минуты? и что бы дата с сегоднешней совпадала :)
Был вариант вытащить у всех пользователей время последнего обращения к странице и разбить дату на массив(отдельно секунды, минуты, часы....) и потом подбирать с помощью
time(), но слишком ресурсоемко.
select * from user where last_visit > DATE_SUB(NOW(), INTERVAL 3 MINUTE)
kaww спасибки. Надо научится работать с датой в MySQL запросах
kaww а интервал в три минуты будет нормально или мало/много?
N0ob
,зависит от поведения пользователей на сайте. Если на одной странице находятся дольше трех минут (например читают статью), то логичнее увеличить время
З.Ы. обычно пользователь считается онлайн ~15мин с момента последней активности.
Игорь_Vasinsky
7.05.2013 - 11:20
Цитата |
З.Ы. обычно пользователь считается онлайн ~15мин с момента последней активности. |
точнее сказать - аура пользователя растворяется в дебрях сайта за 15 минут
_____________
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 запрос у меня храмает.
SELECT `avatar`, `id`, `name`, `lastname` FROM `users` WHERE `id` IN '2' AND `lastvisit` > DATE_SUB(NOW(), INTERVAL 3 MINUTE) LIMIT 6
из текста ошибки по-любому можно сделать вывод, что проблема тут WHERE `id` IN '2', потому что нужно WHERE `id` = 2 или WHERE `id` IN (2)
Игорь_Vasinsky
dron4ik
7.05.2013 - 13:08
я использую mktime() и варчар...
WHERE last>".(mktime()-(15*60))."
_____________
Ex3m.com.ua — Активный образ жизни
Игорь_Vasinsky
7.05.2013 - 13:14
этож не правильно.. для дат 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
dron4ik
,тогда уж лучше int т.к. по интам быстрее работает. и на пхп тоже есть функции преобразования дат и конечно же DateTime
Игорь_Vasinsky
7.05.2013 - 13:28
не - нужно сразу решить на моменте проектирования что будет чаще востребовано 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
7.05.2013 - 13:44
kawwсори... инт... гдето увидел варчас. и так и написал)
Игорь_Vasinsky+1. я конкрутно использую поле только для етого, та и вывести дату последнего визита не составит труда
echo date("d-m-Y H:i", $row['last']);
_____________
Ex3m.com.ua — Активный образ жизни
dron4ik, а дату последнего визита из "будущего" ниразу не видели?
Или у вас "песочница" только для местных?
_____________
Стимулятор ~yoomoney - 41001303250491
kaww извини, позабыл синтаксис
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.