Скрипт отображает количество посетителей на сайте.
<?php
session_start();
//выделяем уникальный идентификатор сессии
$id = session_id();
//
if ($id!="")
{
//текущее время
$CurrentTime = time();
//через какое время сессии удаляются
$LastTime = time() - 600;
//файл, в котором храним идентификаторы и время
$base = "session.txt";
//
$file = file($base);
$k = 0;
for ($i = 0; $i < sizeof($file); $i++) {
$line = explode("|", $file[$i]);
if ($line[1] > $LastTime) {
$ResFile[$k] = $file[$i];
$k++;
}
}
//
for ($i = 0; $i<sizeof($ResFile); $i++) {
$line = explode("|", $ResFile[$i]);
if ($line[0]==$id) {
$line[1] = trim($CurrentTime)."\n";
$is_sid_in_file = 1;
}
$line = implode("|", $line); $ResFile[$i] = $line;
}
//
$fp = fopen($base, "w");
for ($i = 0; $i<sizeof($ResFile); $i++) { fputs($fp, $ResFile[$i]); }
fclose($fp);
//
if (!$is_sid_in_file) {
$fp = fopen($base, "a-");
$line = $id."|".$CurrentTime."\n";
fputs($fp, $line);
fclose($fp);
}
}
?>
Для вывода в нужном месте информации о количестве посетителей on-line:
<?php
echo "Сейчас на сайте: <b>".sizeof(file($base))."</b>";
?>
Принцип работы:
У каждого посетителя есть свой идентификатор сессии session_id()
. При заходе на сайт мы выделяем этот идентификатор и ищем его в нашей базе (в нашем случае это файл session.txt
в корне сайта). Если такого идентификатора сессии нет, то помещаем его в наш текстовый файл, дополнительно записав текущее время через разделитель "|"
. После обновления страницы пользователем мы вновь выделяем идентификатор сессии, проверяем его наличие в файле session.txt
. Если такого идентификатор сессии нет, то добавляем, если есть – обновляем время (заменяем на текущее время).
<?php
. . .
$base = "session.txt";
. . .
?>
Просматриваем все записи в файле session.txt
и удаляем те, у которых разница с текущим временем составляет больше 10 минут (или 600 секунд). Интервал регулируется в строке:
<?php
. . .
$LastTime = time() - 600;
. . .
?>
Комментарии:
Нет комментариев к этой статье.