第一步:用户通过浏览器输入网址或单击链接发出
HTTP
请求,请求特定的
PHP
网页。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
第二步:
Web
服务器收到请求,获取该
PHP
文件,并把它传到
PHP
引擎。
第四步:数据库接受查询和处理,并把结果返回给
PHP
引擎。
第五步:
PHP
完成脚本运行,以
HTML
格式传回给
Web
服务器。
第六步:最后通过
HTTP
返回请求的
PHP
网页,此时为
HTML
文档形式,通过浏览器解释该文档显示在用户的显示器上。
现在我们来看一下
PHP
静态化的任务是什么,也就说
PHP
静态化指的是什么:
首先需要明了的是,
PHP
静态化工作是在后台执行的,用户需要的目标
PHP
网页其实是已经早已完成
PHP
引擎执行脚本完毕后存储在
Web Server
里的
HTML
静态网页。也许你会说:为什么不直接编写
HTML
静态网页呢?如果你不打算使用数据库,那确实没有什么必要;但你需要使用数据库存储大量数据的时候,你就必须需要
PHP
才能与数据库交互了。
PHP
静态化的作用何在?我的看法有下面几点:
(1)
因为已经存储在
Web Server
里,用户请求特定的页面时,上图显示的工作流程将省去了第
2
,
3
,
4
,
5
步,明显的可以大大加快网页打开速度;
(2)
由于静态网页不会受到
SQL
注入,网站会更安全;
(3)
静态网页更有利于搜索引擎的收录与抓取;
(4)
不用调用数据库
,
服务器端的
CPU
调用大大减少
,
增加服务器的性能
;
(5)
综合地发挥了动态技术与静态技术各自的优点。
PHP
静态化的实现:
第一种方法:伪静态化,是
html
格式不过会传递参数,适合一些独立页面;
第二种方法:缓存方式,静态化是服务器做的,实际是个动态的请求,服务器为了可以缓存动态的结果,将链接做了静态化,每次点击链接时服务器接受对应的
参数在缓存中查找,如果没有按照对应关系请求后台并将其加入缓存;
第三种方法:借助模板来完成静态化,这种方法适合大批文件的转化,诸如一个新闻发布系统,只需要先设计一个模板,再将模板中对应的字符串用数据库中读取的内容替换即可,最后利用
fso
将数据写入
html
文件
.
我们以第三种方法来实现
PHP
的静态化:
这个例子模拟商品信息系统进行。
首先创建用于指定要进行静态化数据信息的文件:static.html:
< form method ="post" action ="info.php" >
商品名称: < input type ="text" name ="name" size ="20" >
商品信息: < textarea name ="info" cols=”10” rows ="25" > </textarea>
< input type ="submit" name ="提交" >
</form>
< form method ="post" action ="info.php" >
商品名称: < input type ="text" name ="name" size ="20" >
商品信息: < textarea name ="info" cols=”10” rows ="25" > </textarea>
< input type ="submit" name ="提交" >
</form>
接着创建一个模板文件:info.html:
< html >
< body >
商品名称:{name}
商品信息:{info}
</body>
</html>
再创建一个静态化处理用的
PHP
文件
:info.php:
<?php
require_once("conn.php"); //引入连接数据库文件
$name=$_POST["name"];
$info=$_POST["info"]; //获得表单变量
$countfile="count.txt";
require_once("conn.php"); //引入连接数据库文件
$name=$_POST["name"];
$info=$_POST["info"]; //获得表单变量
$countfile="count.txt";
if(!file_exists($countfile))
{
fopen($countfile,"w"); //如果此文件不存在,则自动建立一个
}
$fp=fopen($countfile,"r");
$num=fgets($fp,20);
$num=$num+1; //每次其值自动加一
fclose($fp);
$fp=fopen($countfile,"w");
fwrite($fp,$num); //更新其值
fclose($fp);
$houzui=".html";
$path=$num.$houzui;
$sql="insert into info (id,name,info,path) values ('','".$title."'.'".$content$path."')";
$query=mysql_query($sql);
$fp=fopen("info.html","r"); //只读打开模板
$str=fread($fp,filesize("info.html"));//读取模板中内容
$str=str_replace("{name}",$name,$str);
$str=str_replace("{info}",$info,$str);//替换内容
fclose($fp);
if(!file_exists($path)){
$handle=fopen($path,"w"); //写入方式打开新闻路径
}
fwrite($handle,$str); //把刚才替换的内容写进生成的HTML文件
fclose($handle);
?>
例子说明:
(1)
这个例子的关键就在于用函数
str_replace()
替换模板文件的内容,并且生成新的的网页;
(2)
实际操作中,模板文件还可以加入大量的美化优化;
(3)
这个例子生成的静态网页取名是以连续的数字命名,你可以进行任意更改
(4)
静态化具体操作不难掌握,关键在于掌握它的理念,非常明了什么时候可以采用静态技术。
转载于:https://blog.51cto.com/woshicto/782203