1 заметка с тегом

weblog

Weblog ping или блоги говорят

На мой взгляд, это очень здравая идея нового веба — что сайты должны обмениваться данными между собой по определённым протоколам. Самый известный — это RSS (экспорт статей сайта), чуть менее известные pingback и trackback (позволяют указать, что на статью сослались), набирающий популярность OpenID (позволяет авторизоваться на сайте пользователю другого сайта), незаслуженно забытый BLIMP (позволяет сайтам оповещать друг друга о битых ссылках).

Протокол «ping», точнее, это часть протокола XML-RPC WebLogs, позволяет сказать другому сайту «у меня по этому URL что-то изменилось». Это очень простая и хорошая идея. Например, поисковые машины (поиск по блогам от Яндекса, например, это умеет, Google — тоже) могут быстрее переиндексировать документы, а сайты — узнать об изменении RSS.

Благодаря ping я имею возможность использовать на сайте поиск Яндекса — ведь у меня есть возможность сообщить, где и что на сайте изменилось.

Как же делается ping? Надо всего лишь открыть соединение к выбранному серверу и передать по определённому URL сообщение. Имя сервера и URL можно найти в поиске или в любом списке «серверов ping для WordPress» (популярный движок блогов WordPress предоставляет пользователю возможность «пинговать» заданные сервера).

Сообщение отсылается по протоколу HTTP, методом POST, записывается в формате XML и имеет следующий (по версии Google) вид:

<?xml version="1.0"?>
<methodCall>
  <methodName>weblogUpdates.extendedPing</methodName>
  <params>
    <param>
      <value>Название вашего блога</value>
    </param>
    <param>
      <value>URL блога</value>
    </param>
    <param>
      <value>URL страницы, которая изменилась</value>
    </param>
    <param>
      <value>URL RSS, RDF или Atom, к которому относится страница</value>
    </param>
    <param>
      <value>Необязательный параметр — категория или «тег» сайта,
       можно указать несколько, разделённые символом «|»</value>
    </param>
  </params>
</methodCall>

На PHP самый простой способ всё это проделать — через Curl, хотя я формирую запрос и отсылаю его через fsockopen. Ответ часто можно и не читать, там содержится информация о том, выполнен ли запрос, но на практике это редко бывает интересно. Если не выполнен, то максимум, что вы можете сделать — это его повторить.