ФорумФорум  КалендарьКалендарь  ЧаВоЧаВо  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  Вход  
Поиск
 
 

Результаты :
 
Rechercher Расширенный поиск
Последние темы
» Подтверждение о прочтении
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор worker8281 Сб Дек 27, 2014 1:05 pm

» Проблема с сессией
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор Murphy Ср Дек 03, 2014 5:20 pm

» Нужнга настройка SugarCRM
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор iliandr777 Пн Ноя 10, 2014 2:28 pm

» Отображение записей (адресатов) в списках адресатов
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор FatherMother Пн Авг 25, 2014 12:21 pm

» Нужен совет. Модуль с множеством одинаковых субпанелей.
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор Павел Пн Июл 28, 2014 12:55 pm

» Нужна помощь с опенкартом
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор manux86 Вс Фев 02, 2014 10:45 am

» вопрос работы насчет СУГАР на сервере
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор Meiir2 Пт Янв 31, 2014 8:46 am

» Интеграция с Google календарем от компании "Куб Три"
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор Dmitry.bereza Ср Авг 14, 2013 10:29 am

» настройка воронки продаж
Самый быстрый способ определить количество пользователей на сайте онлайн Emptyавтор EkaterinaGolovina Чт Июн 13, 2013 12:14 pm

Май 2019
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  
КалендарьКалендарь
Баннеры
Яндекс цитирования статистика
Поддержка проекта
41001634550309

Поделиться
 

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

Перейти вниз 
АвторСообщение
Admin
Admin


Сообщения : 74
Очки : 71
Дата регистрации : 2010-08-23

Самый быстрый способ определить количество пользователей на сайте онлайн Empty
СообщениеТема: Самый быстрый способ определить количество пользователей на сайте онлайн   Самый быстрый способ определить количество пользователей на сайте онлайн EmptyПт Сен 10, 2010 3:37 am

Наверное, путешествуя в Сети, вы не раз натыкались на подобного типа надпись «Сейчас на сайте 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()- filemtime(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()- filemtime(session_save_path() . '' . $file) < MAX_IDLE_TIME * 60) {
$count++;
}
}
closedir($directory_handle);

return $count;

} else {
return false;
}

}

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

Код:
echo 'Онлайн юзеров: ' . getOnlineUsers() . '<br />';
Вернуться к началу Перейти вниз
Посмотреть профиль http://easy-sugarcrm.forum2x2.ru
 
Самый быстрый способ определить количество пользователей на сайте онлайн
Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
 :: PHP - статьи, советы-
Перейти: