更新生成纯静态化页面的三种方式:1.按照时间间隔更新。2.手动更新。3.定时更新(需要系统配合)。
1. 按照时间间隔更新。
当用户第一次访问这个页面的时候,程序自动判断,该静态文件是否存在,并且该文件是否还在有效时间内,如果该文件未超出了有效时间,用户访问的是已经生成的静态文件。如果超出了有效时间,用户得到的是动态输出的内容,同时重新生成静态文件。稍微修改一下昨天的代码为例:
<?php //首先判断是否有静态文件,并且文件的最新修改时间到现在是否大于20秒 if(is_file(‘./text.php‘) && time()-filemtime(‘./text.php‘) <= 20){ //条件成立,将已经生成的静态文件输出给用户 include_once(‘./text.php‘); }else{ //条件不成立,重新走数据库,获取数据,分配模板,输出内容 $arr = array( 0=>array(title=>‘这里是第一个标题‘), 1=>array(title=>‘这里是第二个标题‘), 2=>array(title=>‘这里是第三个标题‘), 3=>array(title=>date(‘Y-m-d H:i:s‘)) ); //缓冲区必须要在输出之前开启 ob_start(); //输出模板 include_once(‘./template.php‘); //输出内容的同时生成静态文件,注意使用的函数是ob_get_contents(); file_put_contents(‘./text.php‘, ob_get_contents()); /* if(file_put_contents(‘./text.php‘, ob_get_contents()){ echo ‘success‘; }else{ echo ‘error‘; } */ } ?>
2.手动更新静态文件
这个超级简单,做一个按钮,给它一个<a>标签,链接到这个脚本即可,点击一下按钮,生成一个最新的静态文件,逻辑代码和昨天写的一模一样,为了阅读方便,我还是把昨天的代码复制一份儿过来吧。
<?php //按照常规套路的话,这个数组应该是从数据库中拿到的 //这里为了简便就直接准备一个二位数组 $arr = array( 0=>array(title=>‘这里是第一个标题‘), 1=>array(title=>‘这里是第二个标题‘), 2=>array(title=>‘这里是第三个标题‘) ); //缓冲区必须要在输出之前开启 ob_start(); //把模板文件引入 include_once(‘./template.php‘); //从缓冲区拿到文件,写到本地保存起来 if(file_put_contents(‘./text.php‘, ob_get_clean())){ echo ‘success‘; }else{ echo ‘error‘; } ?>
3.定时更新(这个需要借助linux系统)
命令行 crontab -e 编辑 crontab
*/1 * * * * php /index.php 每一分钟执行一次index.php脚本
五个*分别表示:分 时 日 月 周
查看crontab日志可以查询是否生成静态文件。命令: tail -f /var/log/cron.log
时间: 2024-10-25 21:22:11