百度实时推送新发布文章的api接口应用示例(socketopen方式推送sitemap)
分类:应用接口| 发布:kuabaobao| 查看:241 | 发表时间:2015/3/26
网站质量不错的网站可以在百度站长平台/数据提交/sitemap栏目下看到实时推送的功能, 目前这个工具是邀请开放, 百度的实时推送的api接口可以实时推送我们新发布的文章, 保证百度在第一时间收录.
百度站长平台 http://zhanzhang.baidu.com/
打开百度站长平台, 点开实时推送的添加新数据接口获得带token的api推送地址:
http://ping.baidu.com/sitemap?site=www.yourdomain.com&resource_name=sitemap&access_token=xxxxxxx
分享一段网友写的php实时推送代码:
php 实时推送新发布的文章
socketopen方式推送sitemap
代码如下:
01 | function sitemap_ping_baidu( $urls ){ |
02 | $baidu_ping_url = 'ping.baidu.com' ; |
03 | $get = '/sitemap?site=www.yourdomain.com&resource_name=sitemap&access_token=xxxxxxx' ; |
05 | if ( ( $io = fsockopen ( $baidu_ping_url , $port , $errno , $errstr , 50 ) ) !== false ) { |
06 | $send = "POST $get HTTP/1.1" . "rn" ; |
07 | $send .= 'Accept: */*' . "rn" ; |
08 | $send .= 'Cache-Control: no-cache' . "rn" ; |
10 | $send .= 'Host: ' . $baidu_ping_url . "rn" ; |
11 | $send .= 'Pragma: no-cache' . "rn" ; |
15 | $xml = '<?xml version="1.0" encoding="UTF-8"?><urlset>' ; |
16 | foreach ( $urls as $url ){ |
18 | $xml .= '<loc><![CDATA[' . $url . ']]></loc>' ; |
19 | $xml .= '<lastmod>' . date ( 'Y-m-d' ). '</lastmod>' ; |
20 | $xml .= '<changefreq>monthly</changefreq>' ; |
21 | $xml .= '<priority>0.8</priority>' ; |
25 | $send .= 'Content-Length:' . strlen ( $xml ). "rn" ; |
26 | $send .= "Connection: Closernrn" ; |
30 | while ( ! feof ( $io ) ) |
32 | $return .= fread ( $io , 4096 ); |
推送后百度会返回的xml文档
代码如下:
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
状态码含义如下
200 | 无使用方式错误,需要进一步观察返回的内容是否正确 |
400 | 必选参数未提供 |
405 | 不支持的请求方式,我们只支持POST方式提交数据 |
411 | HTTP头中缺少Content-Length字段 |
413 | 推送的数据过大,超过了10MB的限制 |
422 | HTTP头中Content-Length声明的长度和实际发送的数据长度不一致 |
500 | 站长平台服务器内部错误 |