仓酷云
标题:
PHP编程:保举浏览:php手艺生成静态页面的完成
[打印本页]
作者:
变相怪杰
时间:
2015-2-3 23:59
标题:
PHP编程:保举浏览:php手艺生成静态页面的完成
在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。 咱们先回忆一些根基的概念。
1、PHP剧本与静态页面。
PHP剧本是一种办事器端剧本法式,可经由过程嵌入等办法与HTML文件夹杂,也能够类,函数封装等模式,以模板的体例对用户恳求停止处置。不管以何种体例,它的根基道理是如许的。由客户端提出恳求,恳求某一页面 -----> WEB办事器引入指定响应剧本停止处置 -----> 剧本被载入办事器 -----> 由办事器指定的PHP解析器对剧本停止解析构成HTML言语模式 ----> 将解析后的HTML语句以包的体例传回给阅读器。由此不好看出,在页面发送到阅读器后, PHP就不存在了,已被转化解析为HTML语句。客户恳求为一静态文件,现实上并没有真实的文件存在在那边,是PHP解析而成绝对应的页面,然后发送回阅读器。这类页面处置体例被称为“静态页面”。
2、静态页面。
静态页面是指在办事器端的确存在的仅含HTML和JS,CSS等客户端运转剧本的页面。它的处置体例是。由客户端提出恳求,恳求某一页面 ---- > WEB办事器确认并载入某一页面 ----> WEB办事器将该页面以包的模式传递回阅读器。由这一进程,咱们对照一下静态页面,便可方现。静态页面需由WEB办事器的PHP解析器停止解析,并且凡是还需毗连数据库,停止数据库存取操作,然后才干构成HTML言语信息包;而静态页面,不必解析,不必毗连数据库,直接发送,可大大加重办事器压力,进步办事器负载才能,大幅供应页面翻开速度和网站全体翻开速度。但其弱点是,不克不及静态地对恳求停止处置,办事器上必需的确存在该文件。
3、模板及模板解析。
模板即还没有填充内容html文件。例如:
temp.html
<P><HTML>
<TITLE>{ title }</TITLE>
<BODY>
this is a { file } file''''s templets
</BODY>
</HTML>
PHP处置:
<P> templetest.php
Code:
$title = "HP喜好者测试模板";
$file = "TwoMax Inter test templet,
author:Sheyi";
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
echo $content;
?>
模板解析处置,行将经PHP剧本解析处置后得出的了局填充(content)进模板的处置进程。凡是借助于模板类。今朝较盛行的模板解析类有 phplib,smarty,fastsmarty等等。模板解析处置的道理凡是为交换。也有些法式员习气将判别,轮回等处置放进模板文件中,用解析类处置,典范使用为block概念,复杂来讲即为一个轮回处置。由PHP剧本指定轮回次数,若何轮回代入等,再由模板解析类详细实行这些操作。
好了,对照过静态页面与静态页面各自的好坏,如今咱们就来讲说,若何用PHP生成静态文件。
PHP生成静态页面并非指PHP的静态解析,输入HTML页面,而是指用PHP创立HTML页面。同时由于HTML的不成写性,咱们创立的HTML 如有修正,则需删失落从头生成便可。(固然你也能够选择用正则停止修正,但团体以为那样做倒不如删失落从头生成来得快捷,有些得失相当。)
言归正传。用过PHP文件操作函数的PHP FANS晓得,PHP中有一个文件操作函数fopen,即翻开文件。若文件不存在,则测验考试创立。这便是PHP可以用来创立HTML文件的实际基本。只需用来寄存HTML文件的文件夹有写权限(即权限制义0777),便可创立文件。(针对UNIX体系而言,Win体系不必思索。)仍以上例为例,若咱们修正最初一句,并指定在test目次下生成一个名为test.html的静态文件:
<P> $title = "拓迈国际测试模板";
$file = "TwoMax Inter test templet,
author:_Max">Matrix@Two_Max";
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w"); //翻开文件指针,创立文件
/*
反省文件是不是被创立且可写
*/
if (!is_writable ($filename)){
die ("文件:".$filename."不成写,请反省其属性后重试!");
}
if (!fwrite ($handle,$content)){ //将信息写入文件
die ("生成文件".$filename."掉败!");
}
fclose ($handle); //封闭指针
die ("创立文件".$filename."胜利!");
?>
实践使用中罕见成绩处理计划参考:
1、文章列表成绩:
在数据库中创立字段,纪录文件名,每生成一个文件,将主动生成的文件名存入数据库,关于保举文章,只需指向寄存静态文件的指定文件夹中的该页面便可。使用PHP操作处置文章列表,存为字符串,生成页面时交换此字符串便可。如,在页面中放置文章列表的表格到场标志{ articletable },而在PHP处置文件中:
<P> $title = "拓迈国际测试模板";
$file = "TwoMax Inter test templet,
author:_Max">Matrix@Two_Max";
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
// 生成列表入手下手
$list = '''''''';
$sql = "select id,title,filename from article";
$query = mysql_query ($sql);
while ($result = mysql_fetch_array ($query)){
$list .= ''''''''.$result[''''title''''].''''
'''';
}
$content .= str_replace ("{ articletable }",$list,$content);
//生成列表停止
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w"); //翻开文件指针,创立文件
/*
反省文件是不是被创立且可写
*/
if (!is_writable ($filename)){
die ("文件:".$filename."不成写,请反省其属性后重试!");
}
if (!fwrite ($handle,$content)){ //将信息写入文件
die ("生成文件".$filename."掉败!");
}
fclose ($handle); //封闭指针
die ("创立文件".$filename."胜利!");
?>
2、分页成绩。
如咱们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,起首咱们经由过程查询失掉以下参数:1,总页数;2,每页篇数。第二步, for ($i = 0; $i < allpages; $i++),页面元素获得,剖析,文章生成,都在此轮回中履行。分歧的是,die ("创立文件".$filename."胜利!";这句去失落,放到轮回后的显示,由于该语句将中断法式履行。例:
<P> $fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$onepage = ''''20'''';
$sql = "select id from article where channel=''''$channelid''''";
$query = mysql_query ($sql);
$num = mysql_num_rows ($query);
$allpages = ceil ($num / $onepage);
for ($i = 0;$i<$allpages; $i++){
if ($i == 0){
$indexpath = "index.html";
} else {
$indexpath = "index_".$i."html";
}
$start = $i * $onepage;
$list = '''''''';
$sql_for_page = "select name,filename,title from article where channel=''''$channelid'''' limit $start,$onepage";
$query_for_page = mysql_query ($sql_for_page);
while ($result = $query_for_page){
$list .= ''''''''.$title.''''
'''';
}
$content = str_replace ("{ articletable }",$list,$content);
if (is_file ($indexpath)){
@unlink ($indexpath); //若文件已存在,则删除
}
$handle = fopen ($indexpath,"w"); //翻开文件指针,创立文件
/*
反省文件是不是被创立且可写
*/
if (!is_writable ($indexpath)){
echo "文件:".$indexpath."不成写,请反省其属性后重试!"; //修正为echo
}
if (!fwrite ($handle,$content)){ //将信息写入文件
echo "生成文件".$indexpath."掉败!"; //修正为echo
}
fclose ($handle); //封闭指针
}
fclose ($fp);
die ("生成份页文件完成,如生成不完整,请反省文件权限体系后从头生成!");
?>
大致思绪如斯,个中如其它数据生成,数据输出输入反省,分页内容指向等可酌情在页面中到场。
在实践文章体系处置进程傍边,还有很多成绩有待思索,与静态页面分歧的地方,需注重的中央还有良多。但大致思绪便是如斯,其它方面可触类旁通而得。
不懂的问题有很多高手帮你解决。但不要认为你是新手,就不能帮助别人,比如今天你学会了怎样安装PHP,明天还可能有朋友会问这个问题,你就可以给他解答,不要认为这是浪费时间,忙别人其实就是帮助自己。
作者:
兰色精灵
时间:
2015-2-4 07:55
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者:
金色的骷髅
时间:
2015-2-5 23:57
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者:
再现理想
时间:
2015-2-14 09:44
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者:
乐观
时间:
2015-2-15 16:11
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者:
若天明
时间:
2015-2-26 00:07
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者:
深爱那片海
时间:
2015-3-8 10:17
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者:
老尸
时间:
2015-3-11 20:49
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者:
爱飞
时间:
2015-3-12 11:42
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者:
活着的死人
时间:
2015-3-15 05:02
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者:
飘灵儿
时间:
2015-3-17 20:08
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者:
第二个灵魂
时间:
2015-3-24 23:12
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
作者:
愤怒的大鸟
时间:
2015-4-6 06:35
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者:
小魔女
时间:
2015-4-14 16:40
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者:
精灵巫婆
时间:
2015-4-24 15:29
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者:
若相依
时间:
2015-5-2 07:14
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者:
山那边是海
时间:
2015-5-2 11:48
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者:
仓酷云
时间:
2015-5-4 15:07
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者:
不帅
时间:
2015-5-4 19:18
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年 具体的记不清啦,囧。
作者:
小妖女
时间:
2015-5-6 17:12
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2