AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Отображение последнего захода поискового бота на текущую страницу

Почитывая однажды сайт www.rukv.ru обнаружил в самом низу страницы интересную статистику, а именно время проверки страницы поисковыми ботами. Весьма полезно и удобно анализировать в таком наглядном виде статистику захода поисковых ботов.

Обозначив интерес в разговоре с fof и описав полезность и удобство такого подхода, буквально на следующий день я получил простенький и удобный скрипт, который просто подключается на всех страницах.

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

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


Google:16.11-19:53 Yahoo:17.11-08:22 Msn: Yandex:03.12-09:25 Rambler: Aport:

$logfile = "botlog.txt";
if (!file_exists ( $logfile ) ) {
	$log = array ( );
	file_put_contents ( $logfile, serialize ( $log ) );
	}
else $log = unserialize ( file_get_contents ( $logfile ) );
$uri = $_SERVER [ 'REQUEST_URI' ];
$remap_agents = array (
	'googlebot' => 'Google',
	'yahoo' => 'Yahoo',
	'msnbot' => 'MSN',
	'yandex' => 'Yandex',
	'stackrambler' => 'Rambler',
	'aport' => 'Aport'
	);

$agent=@$_SERVER [ 'HTTP_USER_AGENT' ];
if ( preg_match('/(googlebot|yahoo|msnbot|yandex|stackrambler|aport)/i',
		$agent, $match ) ) {
	$match = strtolower ( $match [ 1 ] );
	$agent = $remap_agents [ $match ];
	$date = date ( "d.m-H:i", time ( ) );
	$log[$uri][$agent] = $date;
	file_put_contents ( $logfile, serialize ( $log ) );
	}
printf ( "Google:%s Yahoo:%s Msn:%s Yandex:%s Rambler:%s Aport:%s",
	@$log[$uri]['Google'],
	@$log[$uri]['Yahoo'],
	@$log[$uri]['MSN'],
	@$log[$uri]['Yandex'],
	@$log[$uri]['Rambler'],
	@$log[$uri]['Aport']
	);
printf ( "G:%s Y:%s M:%s Y:%s R:%s A:%s",
@$log[$uri]['Google'],
@$log[$uri]['Yahoo'],
@$log[$uri]['MSN'],
@$log[$uri]['Yandex'],
@$log[$uri]['Rambler'],
@$log[$uri]['Aport']
);

/*
function file_put_contents ( $n, $d )
{
$f = @fopen ( $n, "w" );
if ( !$f )
return false;
else
{
fwrite ( $f, $d );
fclose ( $f );
return true;
}
}
*/

Если вы используете PHP четвертой версии, а не пятой, то вам будет нужна функция file_put_contents, которая в данном примере закрыта комментариями, раскомментируйте ее.


Автор скрипта Бедарев Егор. Оригинал статьи: http://bechtold.biz/

.

© Copyright 2008-2016 by KDG