php Сколько посетителей на сайте 

Дата публикации  Дата изменения25.01.15  КомментарииНет   Просмотры3807

Курсы

Скрипт отображает количество посетителей на сайте.

<?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;
. . .
?>

Бесплатные курсы

Категории

Теги: , , ,

Оцените материал:

Рейтинг: 10.0/10 (1)


КомментарииКомментарии:

Нет комментариев к этой статье.


 

Старые →← Новые