A PHP Error was encountered

Severity: 8192

Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Filename: mysql/mysql_driver.php

Line Number: 303

Сколько посетители на сайте - PHP скрипт

Сколько посетители на сайте - PHP скрипт

Автор: Mowshon.
Опубликовано 9 апреля 2012
в рубрике PHP, Примеры

Просмотров: 4472.
Подписаться на комментарии по RSS.

Сколько посетители на сайте - PHP скрипт

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

Логика скрипта:

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
Скачать архив с примером

Все вопросы пишем в комментариях.

Оставьте комментарий!

Гость
Комментатор / хотите им стать

Чтобы стать комментатором введите email и пароль. Напишите комментарий. В дальшейшем ваша связка email-пароль, позволит вам комментировать и редактировать свои данные. Не забудьте про активацию (инструкция придет на ящик, указанный при регистрации).

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)