QQ 1640076782

2010年05月29日

PHP静态化 ,PHP半静态化

Filed under: phper — 标签:, , — lijianbin @ 3:05 下午

谈到PHP静态化,有两种含义。第一:静态化一个PHP页面为HTML,第二:全站静态化

第一:静态化一个PHP页面为HTML

备注:这里不讲模板引擎,只谈纯PHP实现原理

重点:ob系列函数,ob_start().ob_get_conent().ob_end_flush(),ob_clean()

Ob为啥意思即output buffering   输出缓存 . 当我们开启ob_start()的时候,来自PHP程序的非文件头信息均不会发送到浏览器,而是保存在ob里面

模型为这样的:

<?php

ob_start();

$name =’lihao’;

?>

<html>

<head>

</head>

<body>

Demo : my name is <?=$name?>

</body>

</html>

<?php

$cache = ob_get_content(); //为以上任何的输出[此输出含义:包括空格,echo 等,html ]

$fp= fopen(‘xxx.html’,’r+’);

fwrite($fp,$cache);

fclose($fp);

unset($cache);

ob_end_flush();

?>

至此就完成了把一个动态的PHP页面 ,静态为html

何时生成html呢?

  1. 通过实践间隔[半小时,一小时等] 进行更新
  2. 通过filemtime(源文件) ,filemtime(目标文件) 等更新时间判断

第二:全站静态化

全站静态化,就说的简单点。实现原理为fopen()函数

实现步骤:

1 .构建全站的URL

如: $url[] = array(

0=>array(

‘php’=>’index.php?jingtaihua=true’,

‘html’=>’index.html’

),

1=>array(

‘php’=>’products.php?jngtaihua=true&id=2&type=catalog’,

‘html’=>’products_2_catalog_.html’

)

);

2.通过静态化变量$_GET[‘jingtaihua’] 来构建页面内部url

如首页:

<html>

<body>

<a href=”

<?php

If($_GET[‘jingtaihua’]){

echo ‘index.html’;

}else{

echo ‘index.php’ ;

}

?>

’>首页</a>

</body>

</html>

  1. 通过fopen()函数实现静态化

foreach($url as $value){

…..

$fp= fopen(‘url’) ;

……

}

谈到半静态化,则是把php地址写为html地址,通过url重写跳转实现 .