Почти каждый человек, хочет чтобы его сайт индексировался крупными поисковыми системами как можно скорее. Что для этого надо сделать?
Крупные поисковые системы можно оповещать о появлении нового контента при помощи удаленного вызова процедур - xmlrpc.
Как человек ленивый, я не захотел писать свою библиотеку, а воспользовался готовым решением:)
Пингование поисковых сервисов реализовано в таком движке, как wordpress. Вот от туда и возьмем файлик class-IXR.php. Чтобы сильно не зависеть от этой библиотеки, напишем для нее небольшую обвертку. У меня на скорую руку получилось как-то так:
<?php
/**
* class Pinger.
*
*/
include_once('lib/class-IXR.php');
class Pinger
{
protected $servers =array();//массив пингуемых серверов
protected $blog_name=''; //Название блога
protected $blog_url=''; //ссылка на главную страницу
protected $rss=''; //ссылка на rss
protected $timeout = 3;
protected $useragent = 'Vasin Alexey - ver 0.0.1';
protected $debug = false;
function __construct($config = false)
{
if($config)
$this->setConfig($config);
}
function setServers($servers)
{
$this->servers = $servers;
}
function addServer($server)
{
$this->servers[] = $server;
}
public function setConfig($config = array())
{
foreach($config as $property_name => $property_value)
{
$this->$property_name = $property_value;
}
}
protected function _createClient($server)
{
$client = new IXR_Client($server);
$client->timeout = $this->timeout;
$client->useragent = $this->useragent;
$client->debug = false;
return $client;
}
function ping($server)
{
$client = $this->_createClient($server);
if(!$result = $client->query('weblogUpdates.extendedPing',
$this->blog_name,
$this->blog_url,
$this->rss)) // then try a normal ping
$result = $client->query('weblogUpdates.ping', $this->blog_name, $this->blog_url);
return $result;
}
function pingServers()
{
foreach($this->servers as $server)
{
if(!$this->ping($server))
echo $server."- failed\n";
else
echo $server."- OK\n";
}
}
/*
* @return Pinger
*/
static function create($config_name)
{
$conf = lmbToolkit::instance()->getConf($config_name);
$pinger = new Pinger($conf);
return $pinger;
}
}
В своей работе я пользуюсь фреймовиком LIMB и мне удобно держать все настройки в конфигурационном файле. Последний метод create создает экземпляр класса Pinger с заданными в файле настройками. Его можно написать любым.
В принципе конфиг должен представлять ассоциативный массив, например такой:
<?php
$conf=array();
$conf['blog_name']='Страницы программиста';
$conf['blog_url']='http://a-develop.ru';
$conf['rss']='http://a-develop.ru/rss';
$conf['servers'] = array(
"http://rpc.pingomatic.com/",
"http://ping.blogs.yandex.ru/RPC2",
"http://blogsearch.google.com/ping/RPC2"/*,
"http://blogsearch.google.co.uk/ping/RPC2",
"http://blogsearch.google.us/ping/RPC2"/*,
"http://1470.net/api/ping",*/
);
В этом массивые заданны по порядку:
Экземпляр объекта я создаю так:
$pinger = Pinger::create('ping.conf.php');
В файле ping.conf.php содержится указанный выше массив. Но в принципе его можно создать так:
$pinger = new Pinger($conf);
Теперь собственно надо выполнить сам пинг:
$pinger->pingServers();
Результатом работы последнего метода будет список пропингованных и не пропингованных серверов. после этого роботы пропингованных сервисов приходят на ваш сайт в течение нескольких часов. Вот такая нехитрая идея.
Комментарии