Самый быстрый способ определить количество пользователей на сайте онлайн
ПРОГРАММ: 649 | СТАТЕЙ: 104 | КОДОВ: 3433   

    главная        новости        программы        библиотека        коды        рейтинг       форум   

Афоризм
Эротический инструмент - пассасижи
 
5 лучших
  Каталог ресурсов
  Полунин Александр-художник.
  Одесское областное базовое медицинское училище
  ЛУЧШИЕ ОБОИ И ФОТОГРАФИИ , DREAM SCENE Vista
  Сайт о популярной французской певице Alizee
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 

  Библиотека > web - разработка > PHPдобавить статью
Самый быстрый способ определить количество пользователей на сайте онлайн

Наверное, путешествуя в Сети, вы не раз натыкались на подобного типа надпись «Сейчас на сайте 99 человек», что означает, что кроме вас...
 
Гречухин Александр
newspc.net
03-10-2004
Версия для печати
печать

Наверное, путешествуя в Сети, вы не раз натыкались на подобного типа надпись «Сейчас на сайте 99 человек», что означает, что кроме вас в данный момент этот сайт просматривает 98 человек. Скорее всего, вы хотели написать такую вещь, но не знали как. Следующая статья покажет как самому написать скрипт, считающий количество посетителей на сайте в данный момент, то есть онлайн.

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

Преимущества.

Ему не нужна реляционная база данных, что согласитесь, в нашем Рунете (я имею в виду относительно бесплатную его часть), является несомненным преимуществом.
Опять же несомненным преимуществом является скорость. Я не поленился написать подобный скрипт с использованием БД и при помощи функции microtime() (в самом низу – результат ее работы – «Время генерации: …») измерил время выполнения:
Используя сессии – 0,7 мс
Используя БД – 14,2 мс
То есть преимущество в скорости – более чем в 19 раз! Вы можете сказать : «Тоже мне большое дело. Всего 13 мс разница», да они будут правы – а если посещаемость большая? Растет нагрузка на сервер и тогда действительно такое преимущество становится очевидным.
Еще одно преимущество – то, что информация в сессиях хранится пока не закрыт браузер или 1440 секунд (стоит по умолчанию в php.ini), в БД информацию о юзерах вам пришлось бы удалять вручную.
И последнее – простота, чтобы объявить сессию достаточно вызвать функцию session_start(), а чтобы настроить правильных образом БД нужно написать целых 15 строк кода.

Недостатки.

Нет детальной статистики – в сможете только узнать количество пользователей в данный момент, для ведения статистики (хиты, хосты…) придется все-таки работать с БД.
Нужен PHP4 – как это ни парадоксально – еще не все хостеры поставили себе PHP4.

Собственно скрипт:

session_start();
define("MAX_IDLE_TIME", 3);
function getOnlineUsers(){
if ( $directory_handle = opendir( session_save_path() ) ) {
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) ) {
if($file != "." && $file != ".."){
if(time()- fileatime(session_save_path() . "" . $file) < MAX_IDLE_TIME * 60) {
$count%2B%2B;
}
} }
closedir($directory_handle);
return $count;
} else {
return false;
}}
echo "Пользователей онлайн: " . getOnlineUsers() . "
";
?>

ЗАМЕЧАНИЕ: Если у вас нет специальной директории для хранения сессий, просто сразу первой строчкой добавьте:

session_save_path("/path/to/custom/directory");

Теперь пройдемся по отдельным частям кода:

session_start();

Следующая строка кода - это объявление некоторой константы, в течении которой пользователи будет считаться активными, то есть присутствующими в данный момент на сайте. В нашем примере - 180 секунд, то есть, если пользовательь не перешел на новую страницу или не перезагрузил эту в течении 3 минут, то он считается ушедшим с сайта и мы его уже не учитываем:

define("MAX_IDLE_TIME", 3);

Теперь мы объявляем функцию getonlineuser() и сразу открываем "сессионную" директорию:

function getOnlineUsers(){

if ( $directory_handle = opendir( session_save_path() ) ) {

Далее идет часть кода, которая собственно и отвечает за подсчет пользователей, функция возвращает кол-во пользователей онлайн:

$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) ) {
if($file != "." && $file != ".."){
if(time()- fileatime(session_save_path() . "" . $file) < MAX_IDLE_TIME * 60) {
$count%2B%2B;
}
}
closedir($directory_handle);

return $count;

} else {
return false;
}

}

И пожалуй, разумно будет вывод количества юзеров в конце:

echo "Онлайн юзеров: " . getOnlineUsers() . "
";

Все! Скрипт готов!



Комментарии
Оставить комментарий
Имя:
E-mail:
Сообщение:


Число:

   очистить

популярные статьи по теменовые статьи
Каталог Ссылок
просмотров 3548
Справочник по PHP и Lite
просмотров 3264
Отправка писем с вложениями на PHP
просмотров 3143
Создание изображений с помощью PHP (gd)
просмотров 3047
Что может РНР?
просмотров 2811
Плохой и хороший траффик
web - разработка / Раскрутка в сети
Наука о web-браузерах
web - разработка / Сайтостроительство
Опытный заказчик + опытный дизайнер = хороший дизайн
web - разработка / Web-дизайн
О технике интернет-рекламы
web - разработка / Раскрутка в сети
Flash-технология. Недостатки
web - разработка / Web-дизайн
Загрузка ...

Опрос
На что Вы обращаете внимание в первую очередь при покупке товара в интернет-магазине?  
 
Комментарии и оценку пользователей
Наличие нескольких фотографий
Подробное и качественное описание
Условия доставки
Возможность покупки в кредит
 
Самое свежее  
 ПРОГРАММЫ

WindowBlinds 6.1.55
WindowBlinds 6.1.55

System Mechanic 7.5.11.14
System Mechanic 7.5.11.14

FileZilla 3.0.9.3
FileZilla 3.0.9.3

 НОВОСТИ

Мы победили! Олимпиада 2014 пройдет в Сочи
Мы победили! Олимпиада 2014 пройдет в Сочи

Алкогольный и наркотический террор против России
Алкогольный и наркотический террор против России

 БИБЛИОТЕКА

Плохой и хороший траффик
Плохой и хороший траффик

Наука о web-браузерах
Наука о web-браузерах

 
Рекомендую!





тИЦ

Copyright © 2004-2008 MostInfo.net  | связь с админом
При использовании материалов сайта ссылка на MostInfo обязательна.