什么是Ping服务
Ping服务是基于XML_RPC标准协议的更新通告服务,当博客内容发生更新时,可以向搜索引擎发出通知,而搜索引擎接收到通知后将派出蜘蛛对博客进行更新或收录。如何Ping服务
Ping服务的使用方式有两种,一种是利用搜索引擎的博客提交页面进行提交,第二种是使用博客程序中的Ping功能,如WordPress自带的更新服务(设置-撰写-更新服务),或者 Typecho Ping插件 。具体的提交地址请参考 《[SEO]在线Ping服务地址与RPC服务地址集合》 。Ping请求包的例子
- POST/ping/RPC2 HTTP/1.0
- User-Agent:request
- Host:ping.baidu.com
- Content-Type:text/xml
- Content-Length:511
- <?xml version="1.0"encoding="UTF-8"?>
- <methodCall>
- <methodName>weblogUpdates.extendedPing</methodName>
- <params>
- <param>
- <value>博客名称</value>
- </param>
- <param>
- <value>博客地址</value>
- </param>
- <param>
- <value>文章地址</value>
- </param>
- <param>
- <value>RSS地址</value>
- </param>
- </params>
- </methodCall>
- POST/ping/RPC2 HTTP/1.0
- User-Agent:request
- Host:ping.baidu.com
- Content-Type:text/xml
- Content-Length:511
- <?xml version="1.0"encoding="UTF-8"?>
- <methodCall>
- <methodName>weblogUpdates.extendedPing</methodName>
- <params>
- <param>
- <value><string>博客名称</string></value>
- </param>
- <param>
- <value><string>博客地址</string></value>
- </param>
- <param>
- <value><string>文章地址</string></value>
- </param>
- <param>
- <value><string>RSS地址</string></value>
- </param>
- </params>
- </methodCall>
以百度为例子:
推送成功时的服务器响应包为:
- HTTP/1.1200OK
- Date:Mon,11May200911:54:53GMT
- Content-Length:156
- Connection:close
- Content-Type:text/xml
- <?xml version="1.0"encoding="UTF-8"?><methodResponse>
- <params>
- <param>
- <value>
- <int>0</int>
- </value>
- </param>
- </params>
- </methodResponse>
- HTTP/1.1200OK
- Date:Mon,11May200911:54:53GMT
- Content-Length:156
- Connection:close
- Content-Type:text/xml
- <?xml version="1.0"encoding="UTF-8"?><methodResponse>
- <params>
- <param>
- <value>
- <int>1</int>
- </value>
- </param>
- </params>
- </methodResponse>
代码实现
原理很简单,使用PHP的cURL进行POST推送:- <?php
- functionping($server,$xml){
- $ch=curl_init();
- $headers=array(
- "Content-type: text/xml;charset=\"utf-8\"",
- "Accept: text/xml"
- );
- curl_setopt_array(
- $ch,
- array(
- CURLOPT_URL=>$server,
- CURLOPT_RETURNTRANSFER=>true,
- CURLOPT_POST=>true,
- CURLOPT_HTTPHEADER=>$headers,
- CURLOPT_POSTFIELDS=>$xml
- )
- );
- returncurl_exec($ch);
- }
- $xml='<?xml version="1.0" encoding="UTF-8"?>
- <methodCall>
- <methodName>weblogUpdates.extendedPing</methodName>
- <params>
- <param><value>博客名称</value></param>
- <param><value>博客地址</value></param>
- <param><value>文章地址</value></param>
- <param><value>RSS地址</value></param>
- </params>
- </methodCall>';
- $res = ping('http://blogsearch.google.com/ping/RPC2', $xml);
- echo $res;
- ?>
若返回0,则说明推送成功。
具体的拓展与应用蓝飞在这里就不再赘述了,留给大家自由发挥吧O(∩_∩)O~
=======================签 名 档=======================
原文地址(我的博客):http://www.clanfei.com/2012/08/1641.html
欢迎访问交流,至于我为什么要多弄一个博客,因为我热爱前端,热爱网页,我更希望有一个更加自由、真正属于我自己的小站,或许并不是那么有名气,但至少能够让我为了它而加倍努力。。
=======================签 名 档=======================