有难度的问题:php如何实现首次运行后即自动编译成静态网页 *.shtml的文件是用SSI写的。通常做成静态是用输出缓冲函数ob_start();//先缓冲输出然后输出内容再用ob_get_contents()函数得到缓冲区的内容。如果你要做成静态的就把ob_get_contents()得到的内容写到文件里。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那就要看你程序怎么写了。你可以在程序运行前检查对应的缓冲文件是否存在。如果存在用header函数直接连到缓冲文件。或者直接把缓冲文件读入输出。 php不行吧,只是有用zend的工具把它编译 你要的效果就是1楼的方法 固定好页面布局后,用ob_get_contents();获得所有数据库,将这些数据写入静态文件,同时将这个静态文件名追加到这条记录上,以后访问这记录的时候,检查是否有文件名就行了,有就用header直接输出到静态文件上,没有则生成。如果发现文件有错误,只需将内容更新的时同时将文件名字段更新为空就行了(呵呵,你还可以写段代码将所有文件名取出来,然后与目录核对,经过核对不对的文件就可以清理掉了~) Here is a build-static-file example for files which have lots of query, u can change the name-method to what u need. For example, u can use 'id' to rename the html files.<?phpif (!$showhtml) { $htmlfilename=substr(strrchr($PHP_SELF,'/'),1).".htm"; //如静态页不存在或过期则生成之 if(!file_exists($htmlfilename) or filemtime($htmlfilename)<time()-600 or filesize($htmlfilename)==0) { //读取动态页面 $fp = fopen("http://".$HTTP_HOST.$PHP_SELF."?showhtml=1", "r"); while ($buffer = fgets($fp, 4096)) { $temp.=$buffer; } fclose($fp); //生成静态页面 $fp = fopen($htmlfilename, "w"); fputs($fp,$temp); fclose($fp); } else { //如静态页存在则读取之 $fp = fopen($htmlfilename, "r"); while ($buffer = fgets($fp, 4096)) { echo $buffer; } exit; }}?> PHP搞个echo XML都折磨疯哥了 php 取数组值最大的键名,有没有这个函数 很怪异的问题,生成静态页面列表时候出现的! 路径总题,急 怎样设置mysql的密码? 如何利用javascript调用php程序的数据,在html 页面显示 文本控件能不让修改吗? 告诉我详细的PHP安装及配置过程 怎样在本窗体关闭后自动刷新其他窗体 请问PHP如何连接Access的数据库呢? 为什么我不能连接到mysql数据库? 如何得到文本文件中指定行的内容
<?php
if (!$showhtml) {
$htmlfilename=substr(strrchr($PHP_SELF,'/'),1).".htm";
//如静态页不存在或过期则生成之
if(!file_exists($htmlfilename) or filemtime($htmlfilename)<time()-600 or filesize($htmlfilename)==0) { //读取动态页面
$fp = fopen("http://".$HTTP_HOST.$PHP_SELF."?showhtml=1", "r");
while ($buffer = fgets($fp, 4096)) {
$temp.=$buffer;
}
fclose($fp); //生成静态页面
$fp = fopen($htmlfilename, "w");
fputs($fp,$temp);
fclose($fp);
}
else {
//如静态页存在则读取之
$fp = fopen($htmlfilename, "r");
while ($buffer = fgets($fp, 4096)) {
echo $buffer;
}
exit;
}
}
?>