最近接到了自动生成sitemap.xml的任务。首先在网上搜集了一些资料参考,发现都是东抄西抄。现整理一下实施方案和思路,欢迎更多的小伙伴提供更好的解决方案。php生成的xml文件主要是一个DOMDocument对象。具体可以看一下官方文档:https://www.php.net/manual/zh/class.domdocument.php。实现方案:生成sitemap.xml(命令行方式)=>rync文件同步(linux定时执行脚本同步文件到目标文件目录)以下是部分实现逻辑代码,仅供参考:publicfunctionsitemap(array$thread,$url,$suffix,$filename='sitemap.xml'){//创建一个DOMDocument对象$dom=new\DOMDocument("1.0","utf-8");header("内容类型:文本/xml");//创建根节点$root=$dom->createElement("urlset");$root->setAttribute("xmlns","http://www.sitemaps.org/schemas/sitemap/0.9");$root->setAttribute("xmlns:mobile","http://www.baidu.com/schemas/sitemap-mobile/1/");$dom->appendChild($root);foreach($threadas$value){//在根下创建一个子节点track$track=$dom->createElement("url");$root->appendChild($track);//在轨道节点下创建一个元素$loc=$dom->createElement("loc");$track->appendChild($loc);$mobile=$dom->createElement("mobile:mobile");$mobile->setAttribute("type","pc,mobile");$track->appendChild($mobile);$priority=$dom->createElement("priority");$吨rack->appendChild($priority);$lastmod=$dom->createElement("lastmod");$track->appendChild($lastmod);$changefreq=$dom->createElement("changefreq");$track->appendChild($changefreq);//赋值$content=$url.$值['id']。$后缀;$text=$dom->createTextNode($content);$loc->appendChild($text);$date=date("Y-m-dH:i:s",strtotime($value['created_at']));$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($filename);}
