Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

PHP для начинающих Количество пользователей на сайте онлайн


Компания ИнфоСтарз
Как читать RSS:
RSS Reader
- для PC Windows
NewsCopier
-для КПК Windows Mobile
FoCuS
- для мобильного телефона
Hand/RSS
- для Palm OS
Другие программы...

Каталог RSS:
что такое RSS?
Компьютеры/Интернет
Безопасность, Блоги/Форумы, Дизайн, Каталоги, Компьютерная техника, Обзоры/Новости, Персональные страницы, Провайдеры, Программирование, Программы, Сервисы

Скачать файлы:

Музыка
Мелодии для мобильных
 
Изображения
 
Видео
 
Игры
 
Программы

БЕСПЛАТНЫЙ
ХОСТИНГ ФАЙЛОВ


Онлайн игры:

     Wizards World - ролевая игра в стиле фэнтези
И был мир волшебников...

     Wizards World II
Темный отыскал путь в другую, астральную плоскость Мира Волшебников...I

     Острова - ролевая игра
Огромный мир океанов и островов, где игроки в поисках приключений...

     Астроникс - звездные войны
Армии противоборствующих сторон канули в хаос...

     Война онлайн
Ты - главнокомандующий армией. Под твоим началом - лучшие воинские части...



Мир Мобильного Контента. MoCO 2007

 


Самый быстрый способ определить количество пользователей на сайте онлайн

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

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

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

Недостатки.

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

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

<?Php
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++;
}
} }
closedir($directory_handle);
return
$count;
} else {
return
false;
}}
echo
'Пользователей онлайн: ' . getOnlineUsers() . '<br />';
?>


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

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++;
}
}
closedir($directory_handle);

return
$count;

} else {
return
false;
}

}


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

echo 'Онлайн юзеров: ' . getOnlineUsers() . '<br />';


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

по материалам сайта http://www.internet-technologies.ru/


В избранное