Перейти к содержимому



Как определить сколько человек находится на сайте?

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 03 Май 2010 - 15:07

Как определить сколько человек находится на сайте, если регистрация не предусмотрена?


 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Как узнать сколько уникальных посетителей в день приходит на сайт?
  2. Сколько страниц должно быть на среднестатистическом сайте
  3. Как понять какое количество человек на сайте
  4. Как узнать находится ли сайт под фильтрами?
  5. Сколько принесёт новостной сайт?

#2 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 03 Май 2010 - 15:38

У нас есть таблица лога посещений с именем "log" и структурой ( id | ip | date дата без минут | datei минуты )


<?
$date=date(...); // Текущая дата. Например 22 03.05.2010 (часы дата.месяц.год)
$datei=date(i); // Сколько сейчас минут
$count_q = mysql_query("SELECT * FROM log WHERE date LIKE '$date' AND datei LIKE '$datei' GROUP BY ip");
$count = mysql_num_rows($count_q);

echo"За эту минуту сайт посетило $count человек";
?>


ps. А над чем работаешь?)


  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#3 Matt

Matt
  • Пользователь
  • 774 сообщений
  • Репутация: 2

Отправлено 03 Май 2010 - 15:42

Есть разные виджеты для этого. Видел даже такие, которые показывают гос-ю принадлежность онлайн-посетителей. Всё зависит от движка сайта, поищи в нете, точно будут.
  • 0

#4 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 03 Май 2010 - 15:44

А если человек не юзает движки, а пишет свой? Как я на пример)


  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#5 reaboom

reaboom
  • Пользователь
  • 40 сообщений
  • Репутация: 0

Отправлено 03 Май 2010 - 15:46

http://www.masterweb...ge-2#entry40965 - почти, тоже самое.

Нужна таблица:

CREATE TABLE sessions
(
id INT NOT NULL AUTO_INCREMENT,
session_id TEXT NOT NULL,
last_time INT NOT NULL,
PRIMARY KEY (id)
);
Код, который должен выполняться на каждой странице:
<?php
// Включаем сессию
session_start();

// Текущее время
$current_time = time();

// Подключаемся к MySQL
mysql_connect('localhost', 'root', '12345');
mysql_select_db('test');

// Выбираем пользователя с такой-же ID-сессий, как сейчас
$res = mysql_query("SELECT * FROM sessions WHERE session_id = '". session_id() ."'");

// Если такого пользователя не существует, то нужно создать его
if (!mysql_num_rows($res)) {
mysql_query("INSERT INTO sessions (session_id, last_time) VALUES('". session_id() ."', '". $current_time ."')");
}
else {
$row = mysql_fetch_array($res);

// Обновляем таблицу
mysql_query("UPDATE sessions SET last_time = '". $current_time ."' WHERE session_id = '". session_id() ."'");
}
?>

Код который подсчитвает количество пользователей онлайн (будем считать, что пользователь онлайн, если последний раз он обновил страницу не позднее 5-ти минут назад):
<?php
// Включаем сессию
session_start();

// Текущее время
$online_time = time() - 300;

// Подключаемся к MySQL
mysql_connect('localhost', 'root', '12345');
mysql_select_db('test');

// Выбираем пользователей, активность которых была не позднее 5-ти минут назад
$res = mysql_query("SELECT * FROM sessions WHERE last_time > '". $online_time ."'");

print mysql_num_rows($res);
?>

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

P.S.
Код состряпал за 2 минуты (и не проверял), так-что может что-то не работать :) Но суть должна быть понятна
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 03 Май 2010 - 18:29

sc2r2bey, всё таже таблица с сессиями. Уже тема была про онлайн :rolleyes: Тут не важно кто зареган, а кто нет, важно, что у каждого посетителя будет свой id_session. Можно ориентироваться по нему, он псевдоуникален.
  • 0

#7 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 03 Май 2010 - 20:04

а какие данные нфдо сканерить и как?
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 03 Май 2010 - 20:14

Надо просто при каждом обращении к странице сайта обновлять таблицу сессий, id сессии можно получить функцией: session_id()
А так же считать сколько человек сейчас в онлайне. А вот удалять данные устаревших сессий советовал бы через СRON
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru