各大搜索引擎Ping服務 php實現方法

各大搜索引擎Ping服務 php實現方法  讓網站快速收錄
【1】手動Ping服務地址: 
Baidu(百度)地址: http://ping.baidu.com/ping.html 
Google(谷歌)地址:http://blogsearch.google.com/ping 
Feedsky(飛遞)地址:http://ping.feedsky.com/ping.html 
Qihoo(奇虎)地址:http://so.blog.qihoo.com/pingblog.html 
IASK(愛問)地址:http://blog.iask.com/ping.php php


【2】自動Ping 服務應用編程接口(API): 
Google(谷歌):http://blogsearch.google.com/ping/RPC2 
Feedburner:http://ping.feedburner.com 
Feedsky(飛遞):http://www.feedsky.com/api/RPC2 
Feedster:http://api.feedster.com/ping.php 
IASK(愛問):http://blog.iask.com/RPC2 
Qihoo(奇虎):http://ping.blog.qikoo.com/rpc2.php 
鮮果:http://www.xianguo.com/xmlrpc/ping.php 
抓蝦:http://www.zhuaxia.com/rpc/server.php 
Blogdigger:http://www.blogdigger.com/RPC2 
blo.gs:http://ping.blo.gs/ 
ICEROCKEThttp://rpc.icerocket.com:10080/ 
Moreover:http://api.moreover.com/RPC2 
Newsgator:http://rpc.newsgator.com/ 
Syndic8:http://www.syndic8.com/xmlrpc.php 
Weblogs:http://rpc.weblogs.com/RPC2 
Weblogalot:http://ping.weblogalot.com/rpc.php html


上面提供的,包括前文說的ping服務,有些我試了好用 有些很差用,要用那些那個看狀況而定。這個本身根據網絡環境等自行測試下,適合的就是最好的,沒有推薦。 
好吧,說了那麼多上面的,下面的是重點,也就是如何實現ping服務,wordpress是能夠經過後臺實現的,其餘的那?好比沒有ping服務功能的博客程序什麼的怎麼辦?據紛紜所知道的,博客系統中好用的WORDPRESS自帶PING功能,毋庸置疑,ASP類的Z-BLOG貌似能夠經過插件實現這個功能。其餘的博客系統?其餘的?沒有其餘,個人選擇惟有wordpress,沒有其餘,只要惟一。呵呵,不開玩笑了。下面說下php來實現ping的服務的問題,這個針對其餘不支持ping功能的網站或者系統之類的,你們能夠自行開發個接口實現。好比DEDECMS的二次開發就能夠,紛紜最近在研究這個項目。 
須要說的是百度的ping和谷歌的提交格式是不一樣的,下面簡單的說說,分別給百度和谷歌作個介紹,首先介紹的是谷歌(爲啥不是百度,OK?別那麼糾結,會有的……): 
【*1】谷歌的ping服務的php的實現 
關於RPC的詳細介紹能夠移步維基百科,谷歌ping服務的標準: 
RPC端點: http://blogsearch.google.com/ping/RPC2 
調用方法名: weblogUpdates.extendedPing 
參數: (應按照以下所列的相同順序傳送) 
站點名 
站點URL 
須要檢查更新的頁面URL 
相應的RSS、RDF或Atom種子的URL 
可選:頁面內容的分類名稱(或標籤)。您能夠指定多個值,之間用'|'字符進行分隔。 
首先要寫一個CURL的函數,來POST谷歌的RPC端點: web

複製代碼代碼以下:

function postUrl($url, $postvar) { 
$ch = curl_init(); 
$headers = array( 
"POST ".$url." HTTP/1.0″, 
"Content-type: text/xml;charset=\"utf-8\"", 
"Accept: text/xml", 
"Content-length: ".strlen($postvar) 
); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar); 
$res = curl_exec ($ch); 
curl_close ($ch); 
return $res; 


主要的curl寫好了以後,剩下就是要根據谷歌的XML-RPC標準組裝發送的數據了,詳細的請求例子能夠參考官方案例,點這裏。 
例如個人代碼是這樣寫的: 編程

複製代碼代碼以下:

$googleXML = <<<END 
<?xml version="1.0″?> 
<methodCall> 
<methodName>weblogUpdates.extendedPing</methodName> 
<params> 
<param> 
<value>Ping服務的php實現方法,讓網站快速被收錄</value> 
</param> 
<param> 
<value>http://s.jb51.net</value> 
</param> 
<param> 
<value>http://s.jb51.net/archives/47.html</value> 
</param> 
<param> 
<value>http://s.jb51.net/feed</value> 
</param> 
</params> 
</methodCall> 
END; 
$res = postUrl(‘http://blogsearch.google.com/ping/RPC2′, $googleXML); 
//下面是返回成功與否的判斷(根據谷歌ping的接口說明) 
if (strpos($res, "<boolean>0</boolean>")) 
echo "PING成功"; 
else 
echo "PING失敗"; 


OK,這個就能夠簡單的實現谷歌的PING服務了。能夠根據代碼自行修改實現這個功能。 
【*2】百度的ping服務的php的實現(這個標題真DT) 
百度的ping服務xml代碼是跟谷歌不一樣的,百度老是會有本身的特色: 
介紹下百度博客ping服務,百度博客Ping服務的詳細介紹,請移步:http://www.baidu.com/search/blogsearch_help.html#n7。 
百度的ping服務也是基於XML-RPC標準協議,可是與谷歌ping服務不一樣的是百度的ping發送的xml格式不一樣,咱們須要使用string節點包裹內容。 
例如: api

複製代碼代碼以下:

<?xml version="1.0″ encoding="UTF-8″?> 
<methodCall> 
<methodName>weblogUpdates.extendedPing</methodName> 
<params> 
<param> 
<value><string>Ping服務的php實現方法,讓網站快速被收錄</string></value> 
</param> 
<param> 
<value><string>http://s.jb51.net/</string></value> 
</param> 
<param> 
<value><string>http://s.jb51.net/archives/47.html</string></value> 
</param> 
<param> 
<value><string>http://s.jb51.net/feed</string></value> 
</param> 
</params> 
</methodCall> 


根據上面提到的谷歌接口,咱們只要改變一下提交的xml內容便可,固然百度ping服務返回的判斷也是跟谷歌的不一樣,也能夠作相應的修改, 
下面是php的代碼: 網絡

複製代碼代碼以下:

$baiduXML = <<<EOT 
<?xml version="1.0″ encoding="UTF-8″?> 
<methodCall> 
<methodName>weblogUpdates.extendedPing</methodName> 
<params> 
<param><value><string>Ping服務的php實現方法,讓網站快速被收錄</string></value></param> 
<param><value><string>http://s.jb51.net</string></value></param> 
<param><value><string>http://s.jb51.net/archives/47.html</string></value></param> 
<param><value><string>http://s.jb51.net/feed</string></value></param> 
</params> 
</methodCall> 
EOT; 
$res = postUrl(‘http://ping.baidu.com/ping/RPC2′, $baiduXML); 
//下面是返回成功與否的判斷(根據百度ping的接口說明) 
if (strpos($res, "<int>0</int>")) 
echo "PING成功"; 
else 
echo "PING失敗"; 


上面的代碼就能夠實現php的ping服務了。好吧,下面再給各位看管提供一個百度的ping服務代碼,沒辦法誰讓他那麼獨特那? curl

複製代碼代碼以下:
<?php  function postUrl($url, $postvar)  {  $ch = curl_init();  $headers = array(  "POST ".$url." HTTP/1.0″,  "Content-type: text/xml; charset=\"gb2312\"",  "Accept: text/xml",  "Content-length: ".strlen($postvar)  );  curl_setopt($ch, CURLOPT_URL, $url);  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  curl_setopt($ch, CURLOPT_POST, 1);  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);  curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar);  $res = curl_exec ($ch);  curl_close ($ch);  return $res;  }  $baiduXML = "<?xml version=\"1.0\" encoding=\"gb2312\"?>  <methodCall>  <methodName>weblogUpdates.extendedPing</methodName>  <params>  <param><value><string>腳本之家</string></value></param>  <param><value><string>http://www.jb51.net</string></value></param>  <param><value><string>http://www.jb51.net/a/15222.html</string></value></param>  <param><value><string>http://www.jb51.net</string></value></param>  </params>  </methodCall>";  $res = postUrl(‘http://ping.baidu.com/ping/RPC2′, $baiduXML);  if ( strpos($res, "<int>0</int>") )  {  echo "PING成功";  }  else  {  echo "PING失敗";  }  ?> 
相關文章
相關標籤/搜索