PHP 自动生成sitemap

$thread = DB::fetch_all("SELECT * FROM ".DB::table('forum_thread')." ORDER BY tid DESC");

// 创建一个DOMDocument对象
$dom = new DOMDocument("1.0","utf-8");
header("Content-Type: text/xml");
// 创建根节点
$root = $dom->createElement("urlset");
$dom->appendChild($root);
foreach($thread as $value){
    // 建立根下子节点track
    $track = $dom->createElement("url");
    $root->appendChild($track);
    // 建立track节点下元素
    $loc = $dom->createElement("loc");
        $track->appendChild($loc);
    $priority = $dom->createElement("priority");
        $track->appendChild($priority);
    $lastmod = $dom->createElement("lastmod");
        $track->appendChild($lastmod);
    $changefreq = $dom->createElement("changefreq");
        $track->appendChild($changefreq);

    // 赋值
    $text = $dom->createTextNode('http://localhost/thread-'.$value[tid].'-1-1.html');
    $loc->appendChild($text);
    $date = date("Y-m-d",time());
    $text = $dom->createTextNode($date);
    $lastmod->appendChild($text);
    $text = $dom->createTextNode(daily);
    $changefreq->appendChild($text);
    $text = $dom->createTextNode(0.8);
    $priority->appendChild($text);
}
//生成xml文件
$dom->save("sitemap.xml");exit;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?php /*  * SiteMap接口类  */ class SitemapAction extends Action{   private static $baseURL = ''; //URL地址   private static $askMobileUrl = 'http://m.xxx.cn/ask/'; //问答移动版地址   private static $askPcUrl = "http://www.xxx.cn/ask/";   //问答pc地址   private static $askZonePcUrl = "http://www.xxx.cn/ask/jingxuan/"; //问答精选Pc链接   private static $askZoneMobileUrl = "http://m.xxx.cn/ask/jx/"; //问答精选移动版链接   //问答setmaps   public function askSetMap(){     header('Content-type:text/html;charset=utf-8');     //获取问题列表     $maxid = 0;    //索引文件最大id     $minid = 0;    //索引文件最小id     $psize = 1000; //数据库每次取数量     $maxXml = 5000; //xml写入记录数量     $where = array();     //读取索引文件     $index = APP_PATH.'setmapxml/Index.txt';     //关联setmaps路径     $askXml = "../siteditu/ask/ask.xml";     if(!file_exists($index)){       $fp=fopen("$index", "w ");       if ( !is_writable($index) ){         die("文件:" .$index. "不可写,请检查!");       }首先取出1000条数据(可以灵活些成活的,方便以后修改),然后循环生成xml格式文件。file_puts_contens写入文件。然后再把生成的xml文件名称、取出问题的最小id、取出问题的最大id、取出问题的条数写出一个索引查询的txt文件当中,格式大概是这个样子的。0,3146886,3145887,1000发现最后面的条数是1000了吗、第一次select取出1000条数据、然后写入0.xml文件当中。把取出的xml文件名称、最小id、最大id、条数写入到索引查询txt中。第一次写入了1000条数据到0.xml、生成条数为1000。第二次查询的时候select语句会成为。 where id > 取出的最大id(当前mysql为正序查询、如果为倒序、改成小于) limit 1000 这样的话又取出1000、然后修改索引查询txt的最小id、最大id、生成条数加到2000。以此类推等生成条数到了5000的时候再另起一行写入索引文件、类似这样0,3146886,3145887,5000 1,3148886,3147887,1000这样写的话就减轻了服务器的压力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值