相信 站长们对 百度 站长工具 一定不陌生吧!网站地图(sitemap) 文件,站长们也一点都很 熟悉!网站生成 网站地图文件,这样有助于百度蜘蛛在收录时,找到自己喜欢的格式,更好的收录你的网站内容!
但这是被动的,只有百度定时来访问!内容收录不是很及时。 但最近 发现百度 站长工具 的 "数据提交"-->"Sitemap" 里面多了一个“实时推送” 功能!
实时推送功能:
就是在你发布新内容的时候,通过自己的程序 向百度的 数据推送接口 提交自己新的内容 的网址(url)!
接口调用地址:http://ping.baidu.com/sitemap?site=www.geligreat.com&resource_name=sitemap&access_token=****
参数名称 | 是否必选 | 参数类型 | 说明 |
site | 是 | string | 在站长平台验证的站点,比如www.example.com |
resource_name | 是 | string | 你被允许推送的数据名称,比如RDF_BBS_Thread |
access_token | 是 | string | 在站长平台申请的推送用的准入密钥 |
以下是百度实时推送 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
原文地址:http://ljbao.blog.51cto.com/1835910/1585811