百度站长工具后台有sitemap实时推送功能,并且提供了api方式,那么我们来看看php如何实现百度sitemap的推送功能
但是实时推送sitemap的功能却不一定会开放,具体开放准则我也不是很清楚
可能一些原创类的网站会比较容易获得这个api
选择站点,进入左侧sitemap菜单项-实时推送-添加新数据
在接口处有显示自己的api
接口调用地址:http://ping.baidu.com/sitemap?site=www.dayanmei.com&resource_name=sitemap&access_token=72XZdU1g
php fsocketopen方式实时提交百度sitemapfunction sitemap_ping_baidu($urls){
$baidu_ping_url = 'ping.baidu.com';
$get = '/sitemap?site=www.dayanmei.com&resource_name=sitemap&access_token=72XZdU1g';
$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"?>';
foreach($urls as $url){
$xml .= '';
$xml .= '';
$xml .= ''.date('Y-m-d').'';
$xml .= 'monthly';
$xml .= '0.8';
$xml .= '';
}
$xml .= '';
$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 );
}
return $return;
}else{
return false;
}
}
$return = sitemap_ping_baidu(array('http://www.dayanmei.com/ctyun_cn/'));
返回的结果结构如下<?xml version="1.0" encoding="UTF-8"?>
200
状态码含义如下
反馈码说明200无使用方式错误,需要进一步观察返回的内容是否正确
400必选参数未提供
405不支持的请求方式,我们只支持POST方式提交数据
411HTTP头中缺少Content-Length字段
413推送的数据过大,超过了10MB的限制
422HTTP头中Content-Length声明的长度和实际发送的数据长度不一致
500站长平台服务器内部错误