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

Рубрика: Новости -> Скрипты -> php
Среда, 23 сентября 2009 г.
Просмотров: 6170
Подписаться на комментарии по 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

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

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

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

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

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

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