《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.vephp.com/','http://www.vephp.com/jiaocheng/20.html','http://www.vephp.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.vephp.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.vephp.com/jiaocheng/149.html