首页 > 代码库 > 关于 百度-站长工具 sitemap 实时推送 那点事

关于 百度-站长工具 sitemap 实时推送 那点事

相信 站长们对 百度 站长工具 一定不陌生吧!网站地图(sitemap) 文件,站长们也一点都很 熟悉!网站生成 网站地图文件,这样有助于百度蜘蛛在收录时,找到自己喜欢的格式,更好的收录你的网站内容!
但这是被动的,只有百度定时来访问!内容收录不是很及时。 但最近 发现百度 站长工具 的 "数据提交"-->"Sitemap" 里面多了一个“实时推送” 功能!

实时推送功能:
就是在你发布新内容的时候,通过自己的程序 向百度的 数据推送接口 提交自己新的内容 的网址(url)!
接口调用地址:http://ping.baidu.com/sitemap?site=www.geligreat.com&resource_name=sitemap&access_token=****

参数名称是否必选参数类型说明
sitestring在站长平台验证的站点,比如www.example.com
resource_namestring你被允许推送的数据名称,比如RDF_BBS_Thread
access_tokenstring在站长平台申请的推送用的准入密钥


以下是百度实时推送 php 程序方法分享

/**
*        百度实时 推送
*        参数 $urls 事例
        $urls = array(
                array(‘url‘=>‘http://www.geligreat.com/article-36-1.html‘,‘date‘=>time())),
                array(‘url‘=>‘http://www.geligreat.com/article-35-1.html‘,‘date‘=>time())),
                array(‘url‘=>‘http://www.geligreat.com/article-34-1.html,‘date‘=>time()))
                );
        ping百度成功后,返回推送状态
        200 成功 无使用方式错误
        400 必选参数未提供
        405 不支持的请求方式,目录只支持post方式请求
        411 HTTP 头中缺少Content-Length字段
        413 推送的数据过大,超过了10MB的限制
        422 HTTP头中Content-Length声明的长度和实际发送的数据长度不一致
        500 站长平台服务器内部错误
        ping 百度不成功,返回 false;
*/
function sitemap_ping_baidu($urls){
        $baidu_ping_url = ‘ping.baidu.com‘;
        $get = ‘/sitemap?site=www.geligreat.com&resource_name=sitemap&access_token=***‘;
        $port=80;
        if ( ( $io = fsockopen( $baidu_ping_url, $port, $errno, $errstr, 50 ) ) !== false )  {
                $send = "POST $get HTTP/1.1"."\r\n";
                $send .= ‘Accept: */*‘."\r\n";
                $send .= ‘Cache-Control: no-cache‘."\r\n";

                $send .= ‘Host: ‘.$baidu_ping_url."\r\n";
                $send .= ‘Pragma: no-cache‘."\r\n";
                //$send .= "Referer: http://".$url.$get."\r\n";
                //$send .= ‘User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)‘."\r\n";
                 
                $xml = ‘<?xml version="1.0" encoding="UTF-8"?><urlset>‘;
                foreach($urls as $url){
                        $xml .= ‘<url>‘;
                        $xml .= ‘<loc><![CDATA[‘.$url[‘url‘].‘]]></loc>‘;
                        $xml .= ‘<lastmod>‘.date(‘Y-m-d H:i:s‘,$url[‘date‘]).‘</lastmod>‘;
                        $xml .= ‘<changefreq>monthly</changefreq>‘;
                        $xml .= ‘<priority>0.8</priority>‘;
                        $xml .= ‘</url>‘;
                }
                $xml .= ‘</urlset>‘;

                $send .= ‘Content-Length:‘.strlen($xml)."\r\n";
                $send .= "Connection: Close\r\n\r\n";

                $send .= $xml."\r\n";

                fputs ( $io, $send );

                $return = ‘‘;
                while ( ! feof ( $io ) )
                {
                        $return .= fread ( $io, 4096 );
                }
                $pattern = ‘#<int>(.*)</int>#S‘;
                preg_match_all($pattern,$return,$match);
                ///echo $match[1][0];
                return $match[1][0];
        }else{
                return false;
        }
}

 

本文出自 “给力great” 博客,请务必保留此出处http://ljbao.blog.51cto.com/1835910/1585811

关于 百度-站长工具 sitemap 实时推送 那点事