Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 虚拟主机上定时自动生成静态页面的方法

虚拟主机上定时自动生成静态页面的方法

发布时间:2015-06-02   编辑:www.jquerycn.cn
关于定时生成的问题,独立主机上可以设置计划任务,虚拟主机上如何实现呢?请参考本文的精彩介绍吧。

关于定时生成的问题,独立主机上可以设置计划任务,相关内容大家可以参考如下的文章:
1、linux定时任务设置crontab学习
2、学习linux设置定时任务的crontab命令
3、crontab学习笔记
4、不错的crontab教程

但是对于使用虚拟主机的朋友,怕是不能这样了哦。
面对这种情况时,个人觉得还是先判断已生成的首页文件的生成时间和现有时间之间的差值,如果满足某个值就开始生成这种方法比较来得容易。
好了,不多说,come on baby!
 

复制代码 代码如下:

<?php
$nowtime=time();
$pastsec = $nowtime – $_GET["t"];

if($pastsec<60)
{
exit; //1分钟更新一次,时间可以自己调整
}

ob_start(); //打开缓冲区
include(”index.php”);
$content = ob_get_contents(); //得到缓冲区的内容
$content .= “n<script language=javascript src=”f5.php?t=”.$nowtime.”"></script>”; //加上调用更新程序的代码

file_put_contents(”index.html”,$content);

if (!function_exists(”file_get_contents”))
{
function file_get_contents($fn,$fs)
{
$fp=fopen($fn,”w+”);
fputs($fp,$fs);
fclose($fp);
}
}
?>
 

注解:
三个函数:ob_start()、ob_end_clean()、ob_get_contents()
ob_start():是打开缓冲区的,就是要把你需要生成的静态文件的内容缓存在这里;
ob_get_contents():是读出缓冲区里的内容,下面有代码为例;
ob_end_clean():这个比较重要,只有使用了这个函数后,缓冲区里的内容才会读取出来;
 

复制代码 代码如下:

<?php
if(file_exists("./index.htm"))//看静态index.htm文件是否存在
{
$time=time();

//文件修改时间和目前时间相差?的话,直接导向htm文件,否则重新生成htm
if($time-filemtime("./index.htm")< 600)
{
header("Location:classhtml/main.htm");

}
}

//在你的开始处加入ob_start();
ob_start();

//首页内容,就是你的动态部分了

//在结尾加入ob_end_clean(),并把本页输出到一个变量中
$temp=ob_get_contents();
ob_end_clean();

//写入文件
$fp=fopen("./index.htm",'w');
fwrite($fp,$temp) or die('写文件错误');
//echo"生成HTML完成!";
?>

您可能感兴趣的文章:
PHP实现页面静态化、纯静态化及伪静态化
虚拟主机上定时自动生成静态页面的方法
无需转换成HTML页面,让Google能搜索到动态页面
qemu是用python写的吗
Win8.1下VMware虚拟机无法安装虚拟网卡怎么办?
ubuntu下配置php服务器环境
关于动态映射静态的资料--GOOGLE搜索引擎完全解惑
伪静态几种做法
用Apache实现虚拟主机服务
动态URL静态化

[关闭]