Темы

Блоги

Оповещение сервисов о новом контенте на сайте Суббота 08 Август 2009 13:39:14

Почти каждый человек, хочет чтобы его сайт индексировался крупными поисковыми системами как можно скорее. Что для этого надо сделать?

Крупные поисковые системы можно оповещать о появлении нового контента при помощи удаленного вызова процедур - 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",*/
);
В этом массивые заданны по порядку:

  • Название блога
  • адрес блога
  • адрес ленты rss
  • и массив сервисов для пингования, у меня их не много, но в интернете можно найти огромное количество таких адресов.

Экземпляр объекта я создаю так:

$pinger = Pinger::create('ping.conf.php');

В файле ping.conf.php содержится указанный выше массив. Но в принципе его можно создать так:

$pinger = new Pinger($conf);

Теперь собственно надо выполнить сам пинг:

$pinger->pingServers();

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

Теги:

Комментарии

  • Хм... Нет комментариев... Но вы пожете исправить это!

Написать комментарий

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

Дайте нам знать, что вы - живой человек. Для нас это важно!
Кликните, если плохо видно