Ping服務(wù)的php實(shí)現(xiàn)方法,讓網(wǎng)站快速被收錄
更新時(shí)間:2012年02月04日 14:03:36 作者:
這篇博文繼續(xù)說(shuō)說(shuō)這個(gè)ping服務(wù)的問(wèn)題,首先歸納和總結(jié)以下資料
這篇文章繼續(xù)說(shuō)說(shuō)這個(gè)ping服務(wù)的問(wèn)題,首先歸納和總結(jié)以下資料:
【1】手動(dòng)Ping服務(wù)地址:
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(愛(ài)問(wèn))地址:http://blog.iask.com/ping.php
【2】自動(dòng)Ping 服務(wù)應(yīng)用編程接口(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(愛(ài)問(wèn)):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
上面提供的,包括前文說(shuō)的ping服務(wù),有些我試了好用 有些不好用,要用那些那個(gè)看情況而定。這個(gè)自己根據(jù)網(wǎng)絡(luò)環(huán)境等自行測(cè)試下,適合的就是最好的,沒(méi)有推薦。
好吧,說(shuō)了那么多上面的,下面的是重點(diǎn),也就是如何實(shí)現(xiàn)ping服務(wù),wordpress是可以通過(guò)后臺(tái)實(shí)現(xiàn)的,其他的那?比如沒(méi)有ping服務(wù)功能的博客程序什么的怎么辦?據(jù)紛紜所知道的,博客系統(tǒng)中好用的WORDPRESS自帶PING功能,毋庸置疑,ASP類的Z-BLOG貌似可以通過(guò)插件實(shí)現(xiàn)這個(gè)功能。其他的博客系統(tǒng)?其他的?沒(méi)有其他,我的選擇唯有wordpress,沒(méi)有其他,只要唯一。呵呵,不開(kāi)玩笑了。下面說(shuō)下php來(lái)實(shí)現(xiàn)ping的服務(wù)的問(wèn)題,這個(gè)針對(duì)其他不支持ping功能的網(wǎng)站或者系統(tǒng)之類的,大家可以自行開(kāi)發(fā)個(gè)接口實(shí)現(xiàn)。比如DEDECMS的二次開(kāi)發(fā)就可以,紛紜最近在研究這個(gè)項(xiàng)目。
需要說(shuō)的是百度的ping和谷歌的提交格式是不同的,下面簡(jiǎn)單的說(shuō)說(shuō),分別給百度和谷歌做個(gè)介紹,首先介紹的是谷歌(為啥不是百度,OK?別那么糾結(jié),會(huì)有的……):
【*1】谷歌的ping服務(wù)的php的實(shí)現(xiàn)
關(guān)于RPC的詳細(xì)介紹可以移步維基百科,谷歌ping服務(wù)的標(biāo)準(zhǔn):
RPC端點(diǎn): http://blogsearch.google.com/ping/RPC2
調(diào)用方法名: weblogUpdates.extendedPing
參數(shù): (應(yīng)按照如下所列的相同順序傳送)
站點(diǎn)名
站點(diǎn)URL
需要檢查更新的頁(yè)面URL
相應(yīng)的RSS、RDF或Atom種子的URL
可選:頁(yè)面內(nèi)容的分類名稱(或標(biāo)簽)。您可以指定多個(gè)值,之間用'|'字符進(jìn)行分隔。
首先要寫(xiě)一個(gè)CURL的函數(shù),來(lái)POST谷歌的RPC端點(diǎn):
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寫(xiě)好了之后,剩下就是要根據(jù)谷歌的XML-RPC標(biāo)準(zhǔn)組裝發(fā)送的數(shù)據(jù)了,詳細(xì)的請(qǐng)求例子可以參考官方案例,點(diǎn)這里。
例如我的代碼是這樣寫(xiě)的:
$googleXML = <<<END
<?xml version="1.0″?>
<methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param>
<value>Ping服務(wù)的php實(shí)現(xiàn)方法,讓網(wǎng)站快速被收錄</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);
//下面是返回成功與否的判斷(根據(jù)谷歌ping的接口說(shuō)明)
if (strpos($res, "<boolean>0</boolean>"))
echo "PING成功";
else
echo "PING失敗";
OK,這個(gè)就可以簡(jiǎn)單的實(shí)現(xiàn)谷歌的PING服務(wù)了。可以根據(jù)代碼自行修改實(shí)現(xiàn)這個(gè)功能。
【*2】百度的ping服務(wù)的php的實(shí)現(xiàn)(這個(gè)標(biāo)題真DT)
百度的ping服務(wù)xml代碼是跟谷歌不同的,百度總是會(huì)有自己的特點(diǎn):
介紹下百度博客ping服務(wù),百度博客Ping服務(wù)的詳細(xì)介紹,請(qǐng)移步:http://www.baidu.com/search/blogsearch_help.html#n7。
百度的ping服務(wù)也是基于XML-RPC標(biāo)準(zhǔn)協(xié)議,但是與谷歌ping服務(wù)不同的是百度的ping發(fā)送的xml格式不同,我們需要使用string節(jié)點(diǎn)包裹內(nèi)容。
例如:
<?xml version="1.0″ encoding="UTF-8″?>
<methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param>
<value><string>Ping服務(wù)的php實(shí)現(xiàn)方法,讓網(wǎng)站快速被收錄</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>
根據(jù)上面提到的谷歌接口,我們只要改變一下提交的xml內(nèi)容即可,當(dāng)然百度ping服務(wù)返回的判斷也是跟谷歌的不同,也可以做相應(yīng)的修改,
下面是php的代碼:
$baiduXML = <<<EOT
<?xml version="1.0″ encoding="UTF-8″?>
<methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param><value><string>Ping服務(wù)的php實(shí)現(xiàn)方法,讓網(wǎng)站快速被收錄</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);
//下面是返回成功與否的判斷(根據(jù)百度ping的接口說(shuō)明)
if (strpos($res, "<int>0</int>"))
echo "PING成功";
else
echo "PING失敗";
上面的代碼就可以實(shí)現(xiàn)php的ping服務(wù)了。好吧,下面再給各位看管提供一個(gè)百度的ping服務(wù)代碼,沒(méi)辦法誰(shuí)讓他那么獨(dú)特那?
<?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.dhdzp.com</string></value></param>
<param><value><string>http://www.dhdzp.com/a/15222.html</string></value></param>
<param><value><string>http://www.dhdzp.com</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失敗";
}
?>
此文很DT的讓我浪費(fèi)了N個(gè)草稿才寫(xiě)完,然后紛紜就發(fā)現(xiàn)需要搞個(gè)CODE的插件給WP裝備上了。代碼的問(wèn)題真的很糾結(jié),還有就是國(guó)人的WP主題沒(méi)有支持分頁(yè)的,這個(gè)讓我很DT,說(shuō)了半天,DT是啥?不知道……
【1】手動(dòng)Ping服務(wù)地址:
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(愛(ài)問(wèn))地址:http://blog.iask.com/ping.php
【2】自動(dòng)Ping 服務(wù)應(yīng)用編程接口(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(愛(ài)問(wèn)):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
上面提供的,包括前文說(shuō)的ping服務(wù),有些我試了好用 有些不好用,要用那些那個(gè)看情況而定。這個(gè)自己根據(jù)網(wǎng)絡(luò)環(huán)境等自行測(cè)試下,適合的就是最好的,沒(méi)有推薦。
好吧,說(shuō)了那么多上面的,下面的是重點(diǎn),也就是如何實(shí)現(xiàn)ping服務(wù),wordpress是可以通過(guò)后臺(tái)實(shí)現(xiàn)的,其他的那?比如沒(méi)有ping服務(wù)功能的博客程序什么的怎么辦?據(jù)紛紜所知道的,博客系統(tǒng)中好用的WORDPRESS自帶PING功能,毋庸置疑,ASP類的Z-BLOG貌似可以通過(guò)插件實(shí)現(xiàn)這個(gè)功能。其他的博客系統(tǒng)?其他的?沒(méi)有其他,我的選擇唯有wordpress,沒(méi)有其他,只要唯一。呵呵,不開(kāi)玩笑了。下面說(shuō)下php來(lái)實(shí)現(xiàn)ping的服務(wù)的問(wèn)題,這個(gè)針對(duì)其他不支持ping功能的網(wǎng)站或者系統(tǒng)之類的,大家可以自行開(kāi)發(fā)個(gè)接口實(shí)現(xiàn)。比如DEDECMS的二次開(kāi)發(fā)就可以,紛紜最近在研究這個(gè)項(xiàng)目。
需要說(shuō)的是百度的ping和谷歌的提交格式是不同的,下面簡(jiǎn)單的說(shuō)說(shuō),分別給百度和谷歌做個(gè)介紹,首先介紹的是谷歌(為啥不是百度,OK?別那么糾結(jié),會(huì)有的……):
【*1】谷歌的ping服務(wù)的php的實(shí)現(xiàn)
關(guān)于RPC的詳細(xì)介紹可以移步維基百科,谷歌ping服務(wù)的標(biāo)準(zhǔn):
RPC端點(diǎn): http://blogsearch.google.com/ping/RPC2
調(diào)用方法名: weblogUpdates.extendedPing
參數(shù): (應(yīng)按照如下所列的相同順序傳送)
站點(diǎn)名
站點(diǎn)URL
需要檢查更新的頁(yè)面URL
相應(yīng)的RSS、RDF或Atom種子的URL
可選:頁(yè)面內(nèi)容的分類名稱(或標(biāo)簽)。您可以指定多個(gè)值,之間用'|'字符進(jìn)行分隔。
首先要寫(xiě)一個(gè)CURL的函數(shù),來(lái)POST谷歌的RPC端點(diǎn):
復(fù)制代碼 代碼如下:
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寫(xiě)好了之后,剩下就是要根據(jù)谷歌的XML-RPC標(biāo)準(zhǔn)組裝發(fā)送的數(shù)據(jù)了,詳細(xì)的請(qǐng)求例子可以參考官方案例,點(diǎn)這里。
例如我的代碼是這樣寫(xiě)的:
復(fù)制代碼 代碼如下:
$googleXML = <<<END
<?xml version="1.0″?>
<methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param>
<value>Ping服務(wù)的php實(shí)現(xiàn)方法,讓網(wǎng)站快速被收錄</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);
//下面是返回成功與否的判斷(根據(jù)谷歌ping的接口說(shuō)明)
if (strpos($res, "<boolean>0</boolean>"))
echo "PING成功";
else
echo "PING失敗";
OK,這個(gè)就可以簡(jiǎn)單的實(shí)現(xiàn)谷歌的PING服務(wù)了。可以根據(jù)代碼自行修改實(shí)現(xiàn)這個(gè)功能。
【*2】百度的ping服務(wù)的php的實(shí)現(xiàn)(這個(gè)標(biāo)題真DT)
百度的ping服務(wù)xml代碼是跟谷歌不同的,百度總是會(huì)有自己的特點(diǎn):
介紹下百度博客ping服務(wù),百度博客Ping服務(wù)的詳細(xì)介紹,請(qǐng)移步:http://www.baidu.com/search/blogsearch_help.html#n7。
百度的ping服務(wù)也是基于XML-RPC標(biāo)準(zhǔn)協(xié)議,但是與谷歌ping服務(wù)不同的是百度的ping發(fā)送的xml格式不同,我們需要使用string節(jié)點(diǎn)包裹內(nèi)容。
例如:
復(fù)制代碼 代碼如下:
<?xml version="1.0″ encoding="UTF-8″?>
<methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param>
<value><string>Ping服務(wù)的php實(shí)現(xiàn)方法,讓網(wǎng)站快速被收錄</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>
根據(jù)上面提到的谷歌接口,我們只要改變一下提交的xml內(nèi)容即可,當(dāng)然百度ping服務(wù)返回的判斷也是跟谷歌的不同,也可以做相應(yīng)的修改,
下面是php的代碼:
復(fù)制代碼 代碼如下:
$baiduXML = <<<EOT
<?xml version="1.0″ encoding="UTF-8″?>
<methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param><value><string>Ping服務(wù)的php實(shí)現(xiàn)方法,讓網(wǎng)站快速被收錄</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);
//下面是返回成功與否的判斷(根據(jù)百度ping的接口說(shuō)明)
if (strpos($res, "<int>0</int>"))
echo "PING成功";
else
echo "PING失敗";
上面的代碼就可以實(shí)現(xiàn)php的ping服務(wù)了。好吧,下面再給各位看管提供一個(gè)百度的ping服務(wù)代碼,沒(méi)辦法誰(shuí)讓他那么獨(dú)特那?
復(fù)制代碼 代碼如下:
<?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.dhdzp.com</string></value></param>
<param><value><string>http://www.dhdzp.com/a/15222.html</string></value></param>
<param><value><string>http://www.dhdzp.com</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失敗";
}
?>
此文很DT的讓我浪費(fèi)了N個(gè)草稿才寫(xiě)完,然后紛紜就發(fā)現(xiàn)需要搞個(gè)CODE的插件給WP裝備上了。代碼的問(wèn)題真的很糾結(jié),還有就是國(guó)人的WP主題沒(méi)有支持分頁(yè)的,這個(gè)讓我很DT,說(shuō)了半天,DT是啥?不知道……
相關(guān)文章
php5 non-thread-safe和thread-safe這兩個(gè)版本的區(qū)別分析
從PHP5.2.10版本開(kāi)始(現(xiàn)在有PHP5.2.10和5.3兩個(gè)版本),有None-Thread Safe與Thread Safe兩種版本的可供選擇,這兩種版本有何不同,作為使用者來(lái)說(shuō)又應(yīng)該如何選擇呢?下面聚友將為您講述。2010-03-03
PHP 7.1中AES加解密方法mcrypt_module_open()的替換方案
這篇文章主要給大家介紹了關(guān)于PHP 7.1中AES加解密方法mcrypt_module_open()替換方案的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
將數(shù)組寫(xiě)入txt文件 var_export
var_export($times,true);后面不加true不能寫(xiě)入文件喲2009-04-04
php簡(jiǎn)單實(shí)現(xiàn)單態(tài)設(shè)計(jì)模式的方法分析
這篇文章主要介紹了php簡(jiǎn)單實(shí)現(xiàn)單態(tài)設(shè)計(jì)模式的方法,簡(jiǎn)單分析了單態(tài)設(shè)計(jì)模式的構(gòu)成、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2017-07-07
php+resumablejs實(shí)現(xiàn)的分塊上傳 斷點(diǎn)續(xù)傳功能示例
這篇文章主要介紹了php+resumablejs實(shí)現(xiàn)的分塊上傳 斷點(diǎn)續(xù)傳功能,結(jié)合實(shí)例形式分析了php+resumablejs文件傳輸?shù)木唧w實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
Windows下的PHP 5.3.x安裝 Zend Guard Loader教程
這篇文章主要介紹了Windows下的PHP 5.3.x安裝 Zend Guard Loader教程,安裝方法很簡(jiǎn)單,下載DLL文件,加入配置文件即可,需要的朋友可以參考下2014-09-09
PHP封裝的數(shù)據(jù)庫(kù)保存session功能類
這篇文章主要介紹了PHP封裝的數(shù)據(jù)庫(kù)保存session功能類,涉及php基于SessionHandlerInterface接口實(shí)現(xiàn)的讀取、寫(xiě)入、保存、銷毀等常用操作方法,需要的朋友可以參考下2016-07-07

