有难度的问题: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里的copy函数拷贝中文命名的文件 写一个匹配用户名的正则,解决后散分 谢谢 想从asp.net转php了,不过这是一种退步吗? 自动计算的问题,急需支援 【急】Devedit 5.03中的编辑器得到的textarea如何接收? 谁有sql server数据的分页的class。函数也可以。。 急急急,请问为什么会出现这个错误 很奇怪的问题大家帮我看看 当数据量大于一千万时将数据到处成excel文件的解决方案 为什么我不能连接到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;
}
}
?>