使用thinkphp的行为扩展Ping搜索引擎服务
Ping搜索引擎可以在发布新文章的同时通知搜索引擎,其实最主要的是通知搜索引擎,这篇文章是我原创的,当然了,搜索引擎不是你告诉他原创就原创了,但如果文章是原创的话好处当然是有的。
今天就用ThinkPHP的行为来实现Ping,其实代码很简单,也可以自行添加不同的搜索引擎Ping地址。
上代码:
- <!–?php
- defined(‘THINK_PATH’) or exit();
- class pingBehavior extends Behavior{
- // 先定义要Ping的地址
- // @author LiaoCaiXin
- // blog_name 站点名称
- // blog_home 站点地址
- // blog_url 文章地址
- // rss_url 站点rss地址
- protected $services = array(
- ‘baidu’ =–> ‘http://ping.baidu.com/ping/RPC2’,
- ‘google’ => ‘http://blogsearch.google.com/ping/RPC2’,
- ‘bloglines’ => ‘http://www.bloglines.com/ping’
- );
- //拼接xml
- //@author LiaoCaiXin
- public function run(&$data){
- $xml = ‘<!–?xml version=”1.0″ encoding=”UTF-8″?–>
- <methodcall>
- <methodname>weblogUpdates.extendedPing</methodname>
- <params>
- <param><value>‘ . $data[‘blog_name’] . ‘</value>
- <param><value>‘ . $data[‘blog_home’] . ‘</value>
- <param><value>‘ . $data[‘blog_url’] . ‘</value>
- <param><value>‘ . $data[‘rss_url’] . ‘</value>
- </params>
- </methodcall>‘;
- $xml_baidu = ‘<!–?xml version=”1.0″ encoding=”UTF-8″?–>
- <methodcall>
- <methodname>weblogUpdates.extendedPing</methodname>
- <params>
- <param><value><string>‘ . $data[‘blog_name’] . ‘</string></value>
- <param><value><string>‘ . $data[‘blog_home’] . ‘</string></value>
- <param><value><string>‘ . $data[‘blog_url’] . ‘</string></value>
- <param><value><string>‘ . $data[‘rss_url’] . ‘</string></value>
- </params>
- </methodcall>‘;
- foreach($this->services as $k => $s){
- $s = trim($s);
- if(!empty($s)){
- $c = curl_init();
- $header = array(
- “Content-type: text/xml;charset=\”utf-8\””,
- “Accept: text/xml”
- );
- curl_setopt_array(
- $c,
- array(
- CURLOPT_URL => $s,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_POST => true,
- CURLOPT_HTTPHEADER => $header,
- CURLOPT_POSTFIELDS => $k === ‘baidu’ ? $xml_baidu : $xml
- )
- );
- $content=curl_exec($c);
- curl_close($c);
- }
- }
- }
- }
复制代码
调用也很简单,在模型和控制器中调用都行,我是在控制器调用的。
示例代码:
- //更新Ping
- //需要更新的url列表
- $update = array(
- ‘blog_name’ => ‘魔力贝’,
- ‘blog_home’ => ‘http://www.molibei.com’,
- ‘blog_url’ => U(‘article/index@www.molibei.com’,array(‘id’=>$id)),
- ‘rss_url’ => U(‘rss/index@www.molibei.com’)
- );
- tag(‘ping’,$update);
复制代码
就可以实现发布文章的同时Ping搜索引擎了