ПРОГРАММ: 654 | СТАТЕЙ: 125 | КОДОВ: 3434   

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

Афоризм
А.. аа.. ааа.. апчхич2ШO__м&bЛш NO CARRIER
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 
Полезное!
 
7 лучших
  WiseSoft.Ru - архив электронных журналов
  Агентство Информационных Строительных Технологий
  Топливный катализатор "Тонус"
  Аэрореклама в Москве
  Ntl-M Webpage
  
  
 
  Библиотека > 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:
Сообщение:


Число=
укажите сумму чисел на картинке

   очистить

популярные статьи по теменовые статьи
Создание видео из фотографий в программе "ФотоШОУ"
Разное / Обработка фото и видео
Больница для компьютера
железо / Система
Чем так популярны социальные сети?
Разное / разное
Синхронизация данных с сотового телефона на ПК
железо / Мобильные устройства
Куплю хостинг
web - разработка / Хостинг

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

ICQ 8.0.5990
ICQ 8.0.5990

Mozilla Firefox 18.0.2
Mozilla Firefox 18.0.2

ArtMoney 7.40.4
ArtMoney 7.40.4

 НОВОСТИ

Хакерская атака на Google из Китая
Хакерская атака на Google из Китая

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

 БИБЛИОТЕКА

Создание видео из фотографий в программе "ФотоШОУ"
Создание видео из фотографий в программе "ФотоШОУ"

Больница для компьютера

 
Рекомендую!



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