网站地图建设
<?php namespace Admin\Controller; use Think\Controller; class SitemapController extends AdminController { function sitemapxml(){ //$path = 'D:/phpStudy/WWW/pingzhuang/pzwsitemap/'; $path = 'pzwsitemap/'; $patharray = array(); if(!is_dir($path)){ $flag = mkdir($path,0777,true); } $ask = M('ask');//thinkphp 数据链接 $askdata = $ask->order('id desc')->field('id,ctime')->select(); $askurl = "https://www.pzw315.com/ask/reply/id/"; $askmurl = "https://m.pzw315.com/ask/reply/id/"; $askpcdata = array_chunk($askdata,1000); //ask pc操作 foreach($askpcdata as $k=>$v){ $askcontent = '<?xml version="1.0" encoding="UTF-8"?>'.chr(13).'';; $askcontent .= '<urlset xmlns="http://www.google.com/schemas/sitemap/0.9">'.chr(13).'';
foreach($askpcdata[$k] as $k1=>$v1){
$askarray[$k][$k1]['loc'] = $askurl.$v1['id'].'.html';
$urls[] = $askurl.$v1['id'].'.html';
$askarray[$k][$k1]['lastmod'] = empty($v1['ctime'])?'2019-06-09':date("Y-m-d",$v1['ctime']);
$askarray[$k][$k1]['changefreq'] = 'ask';
$askarray[$k][$k1]['priority'] = '0.8';
}
foreach($askarray[$k] as $data){
$askcontent .= $this->create_item($data).chr(13);
}
$askcontent .= '</urlset>'.chr(13).'';
$askfile[$k] = 'sitemap_ask_'.($k+1).'.xml';
file_put_contents($path.$askfile[$k],$askcontent);
$patharray[] =$askfile[$k];
}
//print_r($patharray);exit;
//print_r($urls);exit;
$arr = $this->split($urls);
//print_r(count($urls));exit('aa');
foreach($arr as $k=>$v){
$res = $this->send($v);
}
//echo count($urls);exit;
/*
$api = 'http://data.zz.baidu.com/urls?site=www.pzw315.com&token=uojoqsSz3eC8VCMU';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
//print_r($result);exit;
//print_r($this->split($urls));
*/
$baidu = get_object_vars(json_decode($res));
$this->assign('count', count($urls));
$this->assign('baidu', $baidu);
$this->assign('patharray', $patharray);
$this->display();
exit;
$pathstr = '生成成功'.'<br>';
foreach($patharray as $k=>$v){
$pathstr .= ($k+1).'. '.$v.'<br>';
}echo $pathstr;exit;
}
//百度链接推送
function send($urls){
$api = 'http://data.zz.baidu.com/urls?site=www.pzw315.com&token=uojoqsSz3eC8VCMU';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
return $result;
}
function create_item($data){
$item="<url>\n";
$item.="<loc>".$data['loc']."</loc>\n";
$item.="<lastmod>".$data['lastmod']."</lastmod>\n";
$item.="<changefreq>".$data['changefreq']."</changefreq>\n";
$item.="<priority>".$data['priority']."</priority>\n";
$item.="<data>".$data['data']."</data>\n";
$item.="</url>\n";
return $item;
}
//分割数组
public function split( $data, $num = 400 )
{
$arrRet = array();
if( !isset( $data ) || empty( $data ) )
{
return $arrRet;
}
$iCount = count( $data )/$num;
if( !is_int( $iCount ) )
{
$iCount = ceil( $iCount );
}
else
{
$iCount += 1;
}
for( $i=0; $i<$iCount;++$i )
{
$arrInfos = array_slice( $data, $i*$num, $num );
if( empty( $arrInfos ) )
{
continue;
}
$arrRet[] = $arrInfos;
unset( $arrInfos );
}
return $arrRet;
}
}