什么是Baidu Ping 服务
ping是基于XML_RPC标准协议的更新通告服务,用于博客把内容更新快速通知给百度,以便百度及时进行抓取和更新。
简而言之,就是网站新增文章后,可以自动把新文章地址立刻通知百度来收录,是网站SEO优化,原创防止复制的神器。
我用CakePHP 3.0+ 写了一个这样一个Baidu Ping 的小部件,简单,但很有用。
php
CakePHP 3.0+ BaiduPing Components: <?php /** * 适用于CakePHP 3.0+ 的百度PING部件。了解百度PING http://zhanzhang.baidu.com/tools/ping * 网站发布文章成功后,调用此部件,及时通知百度收录。是每个网站必备工具。 * 使用方法: * Controller: * $this->Baidu = $this->loadComponents('Baidu'); * if($this->Baidu->ping(['posturl'=>'文章地址'])){ * 百度返回收到新文章地址成功 * } * @author macnie * @link http://www.macnie.com 会保持更新 */ namespace App\Controller\Component; use Cake\Controller\Component; use Cake\Utility\Xml; use Cake\Network\Http\Client; class BaiduComponent extends Component { /** * 把SITE_NAME,SITE_URL换成你自己的即可 * @param 必须传递 $prams['posturl'] $params * @return bool */ public function ping($params = []){ $url = 'http://ping.baidu.com/ping/RPC2'; $default = [ 'sitename'=>SITE_NAME, 'siteurl'=>SITE_URL, 'posturl'=>'', //此项必传递,否则返回ping失败 'rss'=>SITE_URL.'/rss', ]; $options = array_merge($default,$params);// 组装数据包 $array = [ 'methodCall'=>[ 'methodName'=>'weblogUpdates.extendedPing', 'params'=>[ 'param'=>[ [ 'value'=>['string'=>$options['sitename'],] ], [ 'value'=>[ 'string'=>$options['siteurl'], ] ], [ 'value'=>[ 'string'=>$options['posturl'], ] ], [ 'value'=>[ 'string'=>$options['rss'], ] ] ] ] ] ]; $xml = Xml::fromArray($array); $xml = $xml->asXML();//创建XML $HttpSocket = new Client(); $res = $HttpSocket->post($url,$xml);// 向百度发送ping的POST请求 $this->log($res); $xmlArray = Xml::toArray(Xml::build($res->body()));//把百度返回值处理成数组 return !$xmlArray['methodResponse']['params']['param']['value']['int'];// 处理接受值。返回1:失败;0:成功。百度这个设定很别扭 } }