利用PHP完成张戈大佬的Sitemap静态化

上周就开始用张戈大佬写的Sitemap了,可是在我这静态化CDN提示502,导致sitemap后面多了一堆HTML。本来是用cloudxns的私有线路回源,可是这tm主机到底有多少ip啊,于是在网上找了一大堆资料,勉勉强强拼凑出几行代码

<?php
/*
名称:Sitemap静态化
作者:狂放
地址:https://www.iknet.top/646.html
*/
$url = "https://www.iknet.top/xmlmap.php";
$ch = curl_init();  
$timeout = 5;  
curl_setopt($ch, CURLOPT_URL, $url);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
curl_setopt($ch, CURLOPT_CONNECT_TO, "127.0.0.1:80");//指定ip 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查  
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL加密算法是否存在   
$contents = curl_exec($ch);  
curl_close($ch);  
$sitemapxml = fopen("sitemap.xml", "w") or die("无法打开文件");
fwrite($sitemapxml, $contents);
fclose($sitemapxml);
echo "网站地图更新成功";

变量url是你保存的PHP Sitemap文件的地址,第十三行是指定ip用的,不要的可以注释掉。第十四十五行是HTTPS用的,HTTP注释掉好了

这个呢需要服务器开启CURL和Fopen扩展,另外呢要在该目录下建立一个sitemap.xml的文件,否则提示打不开。

CURLOPT_CONNECT_TO需要curl7.49.0,PHP7.0.7以上,注意一下版本,另外格式是主机:打开,一般http端口是80,https是443

然后在主机添加个crontab

0 1 * * * /usr/local/bin/php /home/user/domains/iknet.top/public_html/map.php

意思是每天一点执行更新,前面的"0 1 * * *"是时间在很多面板里要去掉,填到相应的地方(DA就是),"/usr/local/bin/php"是PHP的路径,不知道问一下主机商就好,后面的则是文件在服务器里的路径,一般来说DA/CP面板都写了,至于国产的EP嘛。。。

这个效率上肯定比不了wget,还得读到内存里,要文件够大的话主机都会炸掉,不过我呢也只能将就着用咯

weinxin
我的微信
这是我的微信,扫一扫加我好友
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:10   其中:访客  5   博主  5

    • avatar 米虫博客 1
      回复 2017年11月25日 下午6:43  沙发

      Contab定时任务

      • avatar 钟水洲博客 1
        回复 2017年11月30日 上午11:56  板凳

        配图很牛逼,仿佛看透了博主

          • avatar 狂放 博主
            回复 2017年11月30日 下午12:50  1层

            @钟水洲博客 没有图啊,你说的是缩略图?我可是很纯洁的(滑稽)

          • avatar 民在国 0
            回复 2017年11月30日 下午4:21  地板

            这个挺厉害的

            • avatar 历史笔记 1
              回复 2017年12月3日 下午8:46  4楼

              对优化这方面 张戈还是很牛的

              • avatar 懿古今 4
                回复 2017年12月7日 下午9:09  5楼

                对于地图,我直接安装一个谷歌地图搞定,懒得折腾

                  • avatar 狂放 博主
                    回复 2017年12月7日 下午9:11  1层

                    @懿古今 插件更省事吧,发布文章后自动更新