Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Online пользователи
 
 автор: ZetRider   (25.04.2012 в 08:36)   письмо автору
 
 

Добрый день.

На сайте есть таблица с данными пользователей, назовем ее usermeta

Структура:
id | user_id | meta_key | meta_value


В этой таблице мы храним разные данные о зарегистрированном пользователе которые не входят в основную таблицу users

У каждого пользователя есть meta_key = lastvisit_time где хранится время последнего визита в виде данных из функции time();

Для того чтобы вывести пользователей онлайн пишу запрос:


<?php
function online_users() {
    global 
$db;
    
$res $db->get_results("SELECT user_id FROM usermeta
    WHERE meta_key = 'lastvisit_time'
    AND ("
.time()." - meta_value ) > '300'
    ORDER BY user_id"
);
    if(
count($res) > 0) {
        foreach (
$res as $row) {
            
$return[] = $row->user_id;
        }
    } else {
        
$return false;
    }
    return 
$return;
}
?>


Когда на сайте онлайн только 1 посетитель, запрос работает, но если посетителей более одного запрос не срабатывает.

В чем я ошибся?

  Ответить  
 
 автор: Valick   (25.04.2012 в 09:33)   письмо автору
 
   для: ZetRider   (25.04.2012 в 08:36)
 

что такое meta_value?

  Ответить  
 
 автор: ZetRider   (25.04.2012 в 09:34)   письмо автору
 
   для: Valick   (25.04.2012 в 09:33)
 


meta_key      varchar(255)
meta_value   longtext

  Ответить  
 
 автор: Valick   (25.04.2012 в 09:35)   письмо автору
 
   для: ZetRider   (25.04.2012 в 09:34)
 

вы шутите?
для хранения времени есть свой формат
и какие вычисления вы хотите от строк?

  Ответить  
 
 автор: ZetRider   (25.04.2012 в 09:36)   письмо автору
 
   для: Valick   (25.04.2012 в 09:35)
 

ясно, буду делать отдельно DATETIME
Если опустить глупость с полем, сам запрос корректен?

  Ответить  
 
 автор: Valick   (25.04.2012 в 09:42)   письмо автору
 
   для: ZetRider   (25.04.2012 в 09:36)
 

вы так и не ответили что такое meta_value, (meta_key это lastvisit_time (и я даже не буду спрашивать почему поле называется meta_key, а не lastvisit_time)), мне надо знать что вы вычитаете
__
в любом случае это делается не так
а дошло до меня, я понял что вы хотите всех обмануть :)
поле таблицы должно содержать однородные данные, а в пытаетесь напихать туда все что можно

  Ответить  
 
 автор: ZetRider   (25.04.2012 в 09:52)   письмо автору
 
   для: Valick   (25.04.2012 в 09:42)
 

Так сложилось что структура таблицы имеет вид мусорки из дополнительных данных для пользователей


id | user_id | meta_key        | meta_value
1  | 1       | ключ            | значение
2  | 1       | user_level      | a:1:{s:10:"sub";s:1:"1";}
3  | 1       | lastvisit_time  | 1335328868
4  | 2       | lastvisit_time  | 1334944936


Вычитаю от текущего времени time() значение поля meta_value где ключ lastvisit_time

>> поле таблицы должно содержать однородные данные, а в пытаетесь напихать туда все что можно

Именно так :) понял свою ошибку, лучше создам отдельное место для данных типа даты время

>> в любом случае это делается не так

Сам запрос? или вообще принцип решения задачи?
---------

  Ответить  
 
 автор: Valick   (25.04.2012 в 10:14)   письмо автору
 
   для: ZetRider   (25.04.2012 в 09:52)
 

и принцип и в большей степени запрос

  Ответить  
 
 автор: ZetRider   (25.04.2012 в 10:15)   письмо автору
 
   для: Valick   (25.04.2012 в 10:14)
 

спасибо, буду решать задачу опираясь на эту тему
http://softtime.ru/forum/read.php?id_forum=3&id_theme=545

  Ответить  
 
 автор: Valick   (25.04.2012 в 10:22)   письмо автору
 
   для: ZetRider   (25.04.2012 в 10:15)
 

можно и так, более лучший вариант сейчас не смогу предложить, не помню где он
но суть именно в отдельной таблице онлайн, из которой удаляются те кто уже неонлайн
там и идентификатор сессии регистрируется и тд.
если нужна статистика посещений, то это уже другая история и другая таблица

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования