Время последней индексации страниц поисковиками

Рубрика: Новости -> Скрипты -> php
Среда, 23 сентября 2009 г.
Просмотров: 5954
Подписаться на комментарии по RSS

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

а именно время проверки страницы поисковыми ботами.

Весьма полезно и удобно анализировать в таком наглядном виде статистику захода поисковых ботов.

Обозначив интерес в разговоре с fof и описав полезность и удобство такого подхода,

буквально на следующий день я получил простенький и удобный скрипт,

который просто подключается на всех страницах.

Теперь на многих моих сайтах в самом низу выводятся идентификаторы поисковых ботов и время их захода на страницу.

Очень интересно наблюдать эти цифры на страницах блога,

т.к. после пинга поисковые боты приходят довольно быстро и можно делать ставки какой придет раньше.

Конечно на первом месте практически всегда оказывается googlebot, потом приходит Yandex,

но в последнее время что-то он стал лениться.

Ниже представлен скрипт, который очень просто реализует такую

статистику.

К описанным идентификаторам ботов можно достаточно просто добавлять

свои.

Количество имен поисковых ботов ограничено только размером оперативной

памяти.

Можно еще более усложнить систему и сохранять не только время

последнего захода,

но и все заходы за время существования сайта (правда в таком случае

лучше использовать MySQL). Информация сохраняется в одном файле,

статистика отображается на каждой странице сайта (точнее на тех, в

которые вы подключите этот скрипт).

Google:04.08-00:47 Yahoo:18.09-21:55 Msn:14.09-13:33 Yandex:09.09-06:14 Rambler:18.09-21:02 Aport:07.09-16:22
<span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php
$logfile </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(221, 0, 0);">"botlog.txt"</span><span style="color: rgb(0, 119, 0);">;
if (!</span><span style="color: rgb(0, 0, 187);">file_exists </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(0, 0, 187);">$logfile </span><span style="color: rgb(0, 119, 0);">) ) {
    </span><span style="color: rgb(0, 0, 187);">$log </span><span style="color: rgb(0, 119, 0);">= array ( );
    </span><span style="color: rgb(0, 0, 187);">file_put_contents </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(0, 0, 187);">$logfile</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(0, 0, 187);">serialize </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(0, 0, 187);">$log </span><span style="color: rgb(0, 119, 0);">) );
    }
else </span><span style="color: rgb(0, 0, 187);">$log </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(0, 0, 187);">unserialize </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(0, 0, 187);">file_get_contents </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(0, 0, 187);">$logfile </span><span style="color: rgb(0, 119, 0);">) );
</span><span style="color: rgb(0, 0, 187);">$uri </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(0, 0, 187);">$_SERVER </span><span style="color: rgb(0, 119, 0);">[ </span><span style="color: rgb(221, 0, 0);">'REQUEST_URI' </span><span style="color: rgb(0, 119, 0);">];
</span><span style="color: rgb(0, 0, 187);">$remap_agents </span><span style="color: rgb(0, 119, 0);">= array (
    </span><span style="color: rgb(221, 0, 0);">'googlebot' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'Google'</span><span style="color: rgb(0, 119, 0);">,
    </span><span style="color: rgb(221, 0, 0);">'yahoo' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'Yahoo'</span><span style="color: rgb(0, 119, 0);">,
    </span><span style="color: rgb(221, 0, 0);">'msnbot' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'MSN'</span><span style="color: rgb(0, 119, 0);">,
    </span><span style="color: rgb(221, 0, 0);">'yandex' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'Yandex'</span><span style="color: rgb(0, 119, 0);">,
    </span><span style="color: rgb(221, 0, 0);">'stackrambler' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'Rambler'</span><span style="color: rgb(0, 119, 0);">,
    </span><span style="color: rgb(221, 0, 0);">'aport' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'Aport'
    </span><span style="color: rgb(0, 119, 0);">);
</span><span style="color: rgb(0, 0, 187);">$agent</span><span style="color: rgb(0, 119, 0);">=@</span><span style="color: rgb(0, 0, 187);">$_SERVER </span><span style="color: rgb(0, 119, 0);">[ </span><span style="color: rgb(221, 0, 0);">'HTTP_USER_AGENT' </span><span style="color: rgb(0, 119, 0);">];
if ( </span><span style="color: rgb(0, 0, 187);">preg_match</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">'/(googlebot|yahoo|msnbot|yandex|stackrambler|aport)/i'</span><span style="color: rgb(0, 119, 0);">,
        </span><span style="color: rgb(0, 0, 187);">$agent</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(0, 0, 187);">$match </span><span style="color: rgb(0, 119, 0);">) ) {
    </span><span style="color: rgb(0, 0, 187);">$match </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(0, 0, 187);">strtolower </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(0, 0, 187);">$match </span><span style="color: rgb(0, 119, 0);">[ </span><span style="color: rgb(0, 0, 187);">1 </span><span style="color: rgb(0, 119, 0);">] );
    </span><span style="color: rgb(0, 0, 187);">$agent </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(0, 0, 187);">$remap_agents </span><span style="color: rgb(0, 119, 0);">[ </span><span style="color: rgb(0, 0, 187);">$match </span><span style="color: rgb(0, 119, 0);">];
    </span><span style="color: rgb(0, 0, 187);">$date </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(0, 0, 187);">date </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(221, 0, 0);">"d.m-H:i"</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(0, 0, 187);">time </span><span style="color: rgb(0, 119, 0);">( ) );
    </span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(0, 0, 187);">$agent</span><span style="color: rgb(0, 119, 0);">] = </span><span style="color: rgb(0, 0, 187);">$date</span><span style="color: rgb(0, 119, 0);">;
    </span><span style="color: rgb(0, 0, 187);">file_put_contents </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(0, 0, 187);">$logfile</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(0, 0, 187);">serialize </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(0, 0, 187);">$log </span><span style="color: rgb(0, 119, 0);">) );
    }
</span><span style="color: rgb(0, 0, 187);">printf </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(221, 0, 0);">"Google:%s Yahoo:%s Msn:%s Yandex:%s Rambler:%s Aport:%s"</span><span style="color: rgb(0, 119, 0);">,
    @</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Google'</span><span style="color: rgb(0, 119, 0);">],
    @</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Yahoo'</span><span style="color: rgb(0, 119, 0);">],
    @</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'MSN'</span><span style="color: rgb(0, 119, 0);">],
    @</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Yandex'</span><span style="color: rgb(0, 119, 0);">],
    @</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Rambler'</span><span style="color: rgb(0, 119, 0);">],
    @</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Aport'</span><span style="color: rgb(0, 119, 0);">]
    );
</span><span style="color: rgb(0, 0, 187);">printf </span><span style="color: rgb(0, 119, 0);">( </span><span style="color: rgb(221, 0, 0);">"G:%s Y:%s M:%s Y:%s R:%s A:%s"</span><span style="color: rgb(0, 119, 0);">,
@</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Google'</span><span style="color: rgb(0, 119, 0);">],
@</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Yahoo'</span><span style="color: rgb(0, 119, 0);">],
@</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'MSN'</span><span style="color: rgb(0, 119, 0);">],
@</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Yandex'</span><span style="color: rgb(0, 119, 0);">],
@</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Rambler'</span><span style="color: rgb(0, 119, 0);">],
@</span><span style="color: rgb(0, 0, 187);">$log</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">$uri</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">'Aport'</span><span style="color: rgb(0, 119, 0);">]
);
</span><span style="color: rgb(255, 128, 0);">/*
function file_put_contents ( $n, $d )
{
$f = @fopen ( $n, "w" );
if ( !$f )
return false;
else
{
fwrite ( $f, $d );
fclose ( $f );
return true;
}
}
*/
</span><span style="color: rgb(0, 0, 187);">?></span></span>

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

которая в данном примере закрыта комментариями, раскомментируйте ее.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 4

  1. 2010-05-28 в 16:53:10 | Алексей

    Спасибо попользуюсь

  2. 2010-09-27 в 07:04:32 | Алексей

    Интересно только одно что в один прекрасный момент вся статистика очистилась по нулям. Может быть это из за веса образовавшегося файла?

  3. по идее размер файла на это не влияет, это может быть связанно из-за одновременной записи данных разными скриптами в один файл.

  4. 2010-09-28 в 11:39:44 | Алексей

    Нет в этот фаил только один скрипт пишет . Причем обнулилось все где то через 4 месяца ( до этого работало как часы ) Вот и думаю возможно ли что из-за большого количества страниц ( > 2500) фаил сильно разросся в весе и хостер его прибил)0

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

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

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

(войти без комментирования)

Имя и сайт используются только при регистрации

Если указать email (зарегистрироваться), то будет уведомление о новых комментариях.

Выберите человечка с поднятой рукой!