Услуги
Работы
Решения
Контакты
 

Flash

Домены

Правила делегирования доменов

Правила домену .UA

Хостинг

Сетевая безопасность

Apache

Web-Технологии

TCP/IP

Программирование для Web

.NET

PHP

Операционные системы

Windows

Раскрутка и реклама

Поисковики

PhotoShop

Базы данных

Веб-Дизайн

Теория



А сколько же пользователей на сайте?

13 /10, 2005 

Наверное, многие из вас видели такую модную фишку как "Сейчас на сайте 126 человек, из них в чате 89". Если нет, то поставить счетчик от SpyLog вы можете легко увидеть, сколько человек находится на вашем сайте.
Вот и я решил сам реализовать такую функцию у себя на сайте http://ancient.dax.ru и вот к чему пришел...

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

Первое что нам понадобится это база данных (в моем случае это MySQL). В этой БД нам нужна таблица с двумя полями username и time


CREATE TABLE session (
username varchar(25) DEFAULT '' NOT NULL,
time varchar(14) DEFAULT '' NOT NULL
);

 

Далее приступим к написанию самого скрипта, вернее одной единственной функции. Итак,


function online() {

$username = getenv("REMOTE_ADDR");

$past = time()-900;

mysql_query("DELETE FROM session WHERE time < $past");
$result = mysql_query("SELECT time FROM session WHERE username='$username'");

$ctime = time();

if ($row = mysql_fetch_array($result)) {
mysql_query("UPDATE session SET username='$username', time='$ctime' WHERE username='$username'");
} else {
mysql_query("INSERT INTO session (username, time) VALUES ('$username', '$ctime')");
}

$result = mysql_query("SELECT COUNT(*) FROM session");
$count = mysql_fetch_array($result);
echo $count[0];

}

 

Алгоритм очень прост. Идентифицируем каждого пользователя и заносим время его прихода на страницу. Определяем время, через которое пользователь будет считаться покинувшим сайт. Вот и все.
Теперь пояснения по коду. Первым делом мы получаем адрес удаленного пользователя (REMOTE_ADDR) и определяем время, через которое будем считать пользователя покинувшим сайт.


mysql_query("DELETE FROM session WHERE time < $past");

 

Этой строкой удаляем все просроченные записи.


$result = mysql_query("SELECT time FROM session WHERE username='$username'");


 

Выбираем из БД поля, для которых REMOTE_ADDR пользователя совпадает с уже зафиксированным.


if ($row = mysql_fetch_array($result)) {
mysql_query("UPDATE session SET username='$username', time='$ctime' WHERE username='$username'");
} else {
mysql_query("INSERT INTO session (username, time) VALUES ('$username', '$ctime')");
}


 

Если такие записи в таблице есть, то обновляем, заносим новое время захода на страницу, если нет - добавляем новую запись.


$result = mysql_query("SELECT COUNT(*) FROM session");
$count = mysql_fetch_array($result);
echo $count[0];


 

Считаем из базы количество записей - это и будет количество посетителей на сайте.

Это все. Ancient
http://ancient.dax.ru

Комментарии


Имя:

е-mail:

Читать в этом разделе


PHP. Полезные скрипты (часть 2)   13 /10, 2005 
Циклы Если бы не было циклов   13 /10, 2005 
А сколько же пользователей на сайте?   13 /10, 2005 
Создание динамического веб-сайта, с использованием ПХП(часть первая)   13 /10, 2005 
Все статьи раздела

Услуги| Работы| Решения| Контакты| Статьи | Ссылки

Copyright © 2005 САЙТ. СТРОЙ Как заработать на своем сайте?