php生成百度sitemap站点地图类函数实例__3.docx

上传人:PIYPING 文档编号:11646346 上传时间:2021-08-27 格式:DOCX 页数:8 大小:14.19KB
返回 下载 相关 举报
php生成百度sitemap站点地图类函数实例__3.docx_第1页
第1页 / 共8页
php生成百度sitemap站点地图类函数实例__3.docx_第2页
第2页 / 共8页
php生成百度sitemap站点地图类函数实例__3.docx_第3页
第3页 / 共8页
php生成百度sitemap站点地图类函数实例__3.docx_第4页
第4页 / 共8页
php生成百度sitemap站点地图类函数实例__3.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《php生成百度sitemap站点地图类函数实例__3.docx》由会员分享,可在线阅读,更多相关《php生成百度sitemap站点地图类函数实例__3.docx(8页珍藏版)》请在三一文库上搜索。

1、php生成百度sitemap站点地图类函数实例_ 问题概述: 公司网站是问答百科的网站、seo工程师提出需求说依据网站的问题来生成xml文件。每个xml文件包含5000条setmap格式数据。现在线上网站大约有70w条问题,所以说基本生成140个xml文件。还有一个索引文件。比如文件的名称以数字开头的。索引文件包含的内容就是每个xml文件的路径还著名称。 为什么要每个文件存储5000条数据呢,由于这是mysql的一个界限值、假如每次取多了以后可能会对线上用户访问造成影响,或者速度变慢。每个文件存储5000条数据,但是mysql selsect的时候不能每次取5000条、现在写的是每次取1000

2、条。那这样规律就有点简单。 实现方法: 首先取出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。其次次查询的

3、时候select语句会成为。 where id 取出的最大id(当前mysql为正序查询、假如为倒序、改成小于) limit 1000 这样的话又取出1000、然后修改索引查询txt的最小id、最大id、生成条数加到2021。以此类推等生成条数到了5000的时候再另起一行写入索引文件、类似这样 0,3146886,3145887,5000 1,3148886,3147887,1000 这样写的话就减轻了服务器的压力。 下面贴出实现代码(风格有点乱): 具体功能代码如下: 代码如下: ?php /* * SiteMap接口类 */ class SitemapAction extends Acti

4、on private static $baseURL = ; /URL地址 private static $askMobileUrl = l;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.xm

5、l; if(!file_exists($index) $fp=fopen($index, w+); if ( !is_writable($index) ) die(文件: .$index. 不行写,请检查!); fclose($fp); else /index.txt文件说明 0:xml文件名称(从1开头)、1:文件最大id、2:文件最小id、3:文件当前记录数 $fp = file($index); $string = $fpcount($fp)-1;/显示最终一行 $arr = explode(, $string); /索引文件数量是否小于$maxXml /假如为第一次运行 if(!$ar

6、r1) $bs=1; $filename=0; else if($arr $arr3$maxXml) $filename = $arr0; $psize = $maxXml-$arr3$psize?$psize:($maxXml-$arr3); $bs = 0; else $filename = $arr0+1; $bs=1; $maxid = empty($arr1)?0:$arr1; $minid = empty($arr2)?0:$arr2; echo 文件名称:.$filename.xml.br/ ; echo 最大id:.$maxid.br /; echo 最小id:.$minid.

7、br /; echo xml写入最大记录:.$maxXml.br /; echo 数据库每次读取数量:.$psize.br /; $list = self:$questionObj-getQuestionSetMap($where,$maxid,$psize); if(count($list)=0) echo 1;exit; $record = $arr3+count($list); /索引文件写入记录数 $indexArr = array(filename=$filename,maxid=$maxid,minid=$minid,maxXml=$record); $start = ?xml v

8、ersion=1.0 encoding=UTF-8 ? .chr(10); $start.=urlset xmlns=l; /移动版链接 $qinfopcurl = self:$askPcUrl.$qinfoid.-p1.html; /pc版链接 $xml.=$this-askMapMobileUrl($qinfo); /移动版 $xml.=$this-askMapPcUrl($qinfo); /pc版 $maxid = end($list); $indexArrmaxid = $maxidid; /更新索引文件 if($bs=0) /更新最终一行 $txt = file($index); $

9、txtcount($txt)-1 = $indexArrfilename.,.$indexArrmaxid.,.$indexArrminid.,.$indexArrmaxXml.rn; $str = join($txt); if (is_writable($index) if (!$handle = fopen($index, w) echo 不能打开文件 $index;exit; exit; if (fwrite($handle, $str) = FALSE) echo 不能写入到文件 $index;exit; exit; echo 胜利地写入文件$index; fclose($handle

10、); else echo 文件 $index 不行写;exit; fclose($index); elseif($bs=1) /新加入一行 $fp = fopen($index,a); $num = count($list); $string = $indexArrfilename.,.$indexArrmaxid.,.$indexArrminid.,.$num.rn; if(fwrite($fp,$string)=false) echo 追加新行失败。;exit; else echo 追加胜利br /; /更新sitemap索引文件 $xmlData=?xml version=1.0 enc

11、oding=UTF-8 ?.chr(10); $xmlData.=sitemapindex.chr(10); $xmlData.=/sitemapindex; if(!file_exists($askXml) file_put_contents($askXml,$xmlData); $fileList = file($askXml); $fileCount = count($fileList); $setmapxml = l/loc mobile:mobile type=mobile/ lastmod2021-01-11/lastmod changefreqdaily/changefreq priority0.8/priority /url url /urlset 至于sql代码主要就是一个select语句,这里就不贴出来了。 更多信息请查看IT技术专栏 .

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1