Сколько посетители на сайте - PHP скрипт
Просмотров: 7470.
Подписаться на комментарии по RSS.
Недавно получил небольшое задание от знакомого программиста, сделать функцию для его сайта которая бы показывала сколько посетителей сейчас на сайта, что интересно не использовать базу данных и как можно компактнее сделать функцию. Я решил использовать ради этого, обыкновенные текстовыми файлами которые не будут содержать ничего, следовательно не будут занимать место.
Логика скрипта:
1. Посетитель входит на сайт, если он новый то создается txt файл с его данными. Если же он недавний посетитель, то обновляем только последнею дату модификации его файла.2. Скрипт получает данные с полным путем всех текстовых файлов в массив. Проверяем когда были сделаны последние модификации в текстовом файле.
3. Если сума последней модификации в текстовом файле( в unix секундах ) + указанный нами срок актуальности файла в секундах, является меньше текущего времени в секундах значит пользователь покинул сайт или не обновил страницу в браузере.
Плюсы скрипта:
- Компактная функция с ясно прокомментированным кодом и логично названными переменными.
- Два вида счета посетителей: 1 - Учитывать только IP. 2 - Учитывать IP и браузер
- Независим от базы данных
- Не требует никаких конфигурации со стороны PHP, требует только права 777 на папку с файлами.
Минусы скрипта:
- Может возникнуть ошибка Permission denied если папка с текстовыми файлами не имеет права 777. Но, это скорее ошибка со стороны пользователя а не скрипта.
- Он не показывает текущие кол-во людей на сайте, он показывает сколько посетителей зашли на сайт за указанный вами интервал времени.
- Любой скрипт можно написать бы лучше, сколько программистов столько и стилей программирования.
Посмотрим код нашей функцииНе забудьте дать папки online_count права 777
<?php function onlineCount() { // Срок актуальности файла посетителя (в секундах) $RelevanceOfTheFile = 60; // Путь до папки где лежат файлы посетителей $VisistersFileDir = $_SERVER['DOCUMENT_ROOT'].'/online_count/'; // Учитывать в названии файла и браузер 1 - да, 0 - нет $AddBrowserAtFileName = 0; // Сохраняем новый файл постетителя $VisiterFileName = $_SERVER['REMOTE_ADDR']; if($AddBrowserAtFileName) { $VisiterFileName .= $_SERVER['HTTP_USER_AGENT']; } $VisiterFileName = $VisistersFileDir.md5($VisiterFileName).'.txt'; $OpenFile = fopen($VisiterFileName, "a+"); // Полный путь до всех файлов формата txt $VisitersFiles = glob($VisistersFileDir.'*.txt'); // Проверяем кол-во посетителей за последние $RelevanceOfTheFile секунд if(!count($VisitersFiles)) { return 0; } else { $ActiveVisiters = 0; foreach($VisitersFiles as $File) { $AgeFile = filemtime($File); if( ($AgeFile + $RelevanceOfTheFile) >= time() ) { $ActiveVisiters += 1; $UpdateTheDateOfLastEdit = fopen($File, 'a+'); @fclose($UpdateTheDateOfLastEdit); } else { @fclose($OpenFile); $DeleteOldFile = unlink($File); } } return $ActiveVisiters; } } $OnlineCount = onlineCount(); echo "Посетителей на сайт за последнюю минуту: ".$OnlineCount; ?>Результат работы скрипта:
Посетителей на сайт за последнюю минуту: 1Скачать архив с примером
Все вопросы пишем в комментариях.
Еще записи по теме
- "Чистый код" путь к профессионализму
- Установка eAccelerator 0.9.6.1 (apache2) на Debian 5
- Отправка e-mail в русской кодировке средствами PHP
- Сохранить изображения из интернета - PHP
- Работа с датой на PHP
- Фреймворк – лучший помошник PHP- программиста
- Проверка адреса электронной почты с использованием PHP и AJAX
Последние комментарии
Напишу скрипт бесплатно
Сортировка массивов по возрастанию и убыванию в PHP