《SEO必備:用PHP提交GOOGLE和百度PING服務的通用類》要點:
本文介紹了SEO必備:用PHP提交GOOGLE和百度PING服務的通用類,希望對您有用。如果有疑問,可以聯系我們。
相關主題:PHP開發
這是維易學院的PHP提交GOOGLE和百度PING服務的通用類。
GOOGLE和百度的PING服務:
ping是基于XML_RPC標準協議的更新通告服務,用于博客把內容更新快速通知給百度,以便百度及時進行抓取和更新。百度明確表示每個站每天可以提交的url是有數量限制的。
在提交PING服務后,百度和谷歌的返回成功的內容:
百度: <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <int>0</int> </value> </param> </params> </methodResponse> 谷歌: <?xml version="1.0"?> <methodResponse><params> <param><value><struct> <member> <name>flerror</name><value><boolean>0</boolean></value> </member> <member> <name>message</name><value>Thanks for the ping.</value> </member> </struct></value></param> </params></methodResponse>
下面是維易PHP學院的PING服務的通用類:
調用實例:
$ping = new pingSearchEngine('網站名稱XXX','http://www.snjht.com/','http://www.snjht.com/jiaocheng/20.html','http://www.snjht.com/rss.php');
echo "PING返回結果:\r\n";
print_r($ping->result); #當為false時則全部失敗。百度或谷歌有一個以上成功即返回數組。
返回結果如下:
屬性$result為false時則全部失敗。百度或谷歌有一個以上成功即返回數組:
Array(
[baidu] => true
[google]=> true
)
維易PHP通用類:
/** GOOGLE和百度的PING服務: * ping是基于XML_RPC標準協議的更新通告服務,用于博客把內容更新快速通知給百度,以便百度及時進行抓取和更新。百度明確表示每個站每天可以提交的url是有數量限制的 * 作者:http://www.snjht.com/ * 版權:可以隨意使用,但務必保留這些注釋信息。 */ class pingSearchEngine { public $result = false; private $serachEngine= array('baidu','google'); private $pingUrl = array( 'http://ping.baidu.com/ping/RPC2', #百度PING地址。 'http://blogsearch.google.com/ping/RPC2' #谷歌PING地址。 ); private $chkReStr = array( '<int>0</int>', #百度返回代碼中的檢查是否有成功的代碼。 '<boolean>0</boolean>' #谷歌的成功代碼 ); private $pingXML; /** 初始化參數:四個均不可為空。 * @param string $webName 網站名稱。 * @param string $webIndex 網站首頁地址。 * @param string $scriptUrl 更新的網頁所在地址。 * @param string $rssUrl RSS所在地址。 * @param string $encode 編碼 **/ public function __construct($webName='', $webIndex='', $scriptUrl='', $rssUrl='' ,$encode='utf-8') { if(empty($encode) || empty($webName) || empty($webIndex) || empty($scriptUrl) || empty($rssUrl) ) return; if(substr($webIndex,0,4)!=='http') return; $this->_getXML($encode, $webName, $webIndex, $scriptUrl, $rssUrl ); $this->postUrl(); } private function _getXML($encode, $webName, $webIndex, $scriptUrl, $rssUrl ) { $this->pingXML = "<?xml version=\"1.0\" encoding=\"${encode}\"?> <methodCall> <methodName>weblogUpdates.extendedPing</methodName> <params> <param><value><string>${webName}</string></value></param> <param><value><string>${webIndex}</string></value></param> <param><value><string>${scriptUrl}</string></value></param> <param><value><string>${rssUrl}</string></value></param> </params> </methodCall>"; } private function postUrl() { $ch = curl_init(); $res = array(); for($i=0; $i<2 ; $i++) { $url = $this->pingUrl[$i]; $chkStr = $this->chkReStr[$i]; $headers = array( "POST ".$url." HTTP/1.0", "Content-type: text/xml; charset=\"gb2312\"", "Accept: text/xml", "Content-length: ".strlen($this->pingXML) ); curl_setopt($ch, CURLOPT_URL, $url); #目標URL curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); #不輸出返回的內容 curl_setopt($ch, CURLOPT_POST, 1); #使用POST方式 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); #設置頭信息。 curl_setopt($ch, CURLOPT_POSTFIELDS, $this->pingXML); #要發送的內容。 $seRe = curl_exec ($ch); #echo $seRe."\r\n\r\n<br />\r\n"; if ( strpos($seRe, $chkStr)!==false ) { $res[$this->serachEngine[$i]] = true; # ping成功, }else{ $res[$this->serachEngine[$i]] = false; } } curl_close($ch); $this->result = $res ? $res : false; } }
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/149.html