仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1788|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之谈PHP生成静态页面

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:58:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我先把我自己学习PHP的过程做一下概括:   1、引 言
在速度上,静态页面要比静态页面的例如php快良多,这是毫无疑问的,然而因为静态页面的天真性较差,假如不借助数据库或其他的装备保留相干信息的话,全体的办理上对照繁琐,例如修正编纂.例如浏览权限限制等,然而,对应一些咱们常常一再利用的文件,例如说,开辟的旧事宣布体系,咱们不但愿良多用户都读取数据库才显示了局,如许一方面损耗了办事器的资本,另外一方面占去了阅读者大批宝贵的呼应工夫,一切,有了"静态页面话"的做法,以后良多网站都采取这类手艺,普通都是由办理后台掌握,或生成html直接显示,或xhtml用CSS掌握显示,或生成xml用xslt显示,这些手艺都不是难的,在这里我就浅易的说说生成html的办法.
2、准备常识
模板手艺:
[PHP] 模板引擎Smarty深切浅出引见  --2005-12-31
[PHP] 笑谈设置装备摆设,利用Smarty手艺        --2006-01-04
缓存手艺:   
有些信息例如常常不变的,然而仍是能变的信息放在缓存中以加速显示速度,这是很有价值的,所谓的缓存,浅显的了解就是一些保留在办事器真个共用信息.它是于办事器同存亡的,咱们在保留缓存的时分可以指定下次更新的工夫的判别,例如要在5分钟更新一次,可以纪录前次更新的工夫,和以后工夫对照,假如大于 5 分钟 ,读取数据库,更新换成,不然直接读取缓存数据,固然,缓存需求客户端用户激活的,只需一次.
ob_start()函数:翻开输入缓冲区.
    函数格局 void ob_start(void)
    申明:当缓冲区激活时,一切来自PHP法式的非文件头信息均不会发送,而是保留在外部缓冲区。为了输入缓冲区的内容,可使用ob_end_flush()或flush()输入缓冲区的内容。
Flush:刷新缓冲区的内容,输入。
    函数格局:flush()
    申明:这个函数常常利用,效力很高。
ob_get_contents :前往外部缓冲区的内容。
    函数格局:string ob_get_contents(void)
    申明:这个函数会前往以后缓冲区中的内容,假如输入缓冲区没有激活,则前往 FALSE.
ob_get_length:前往外部缓冲区的长度。
    函数格局:int ob_get_length(void)
    申明:这个函数会前往以后缓冲区中的长度;和ob_get_contents一样,假如输入缓冲区没有激活,则前往 FALSE.
ob_end_clean:删除外部缓冲区的内容,而且封闭外部缓冲区
    函数格局:void ob_end_clean(void)
    申明:这个函数不会输入外部缓冲区的内容而是把它删除
ob_end_flush:发送外部缓冲区的内容到阅读器,而且封闭输入缓冲区
    函数格局:void ob_end_flush(void)
    申明:这个函数发送输入缓冲区的内容(假如有的话)
ob_implicit_flush:翻开或封闭相对刷新
    函数格局:void ob_implicit_flush ([int flag])
    申明:默许为封闭缓冲区,翻开相对输入后,每一个剧本输入都直接发送到阅读器,不再需求挪用 flush()     
文件写入:   
int fwrite ( resource handle, string string [, int length] )
fwrite() 把 string 的内容写入 文件指针 handle 处。 假如指定了 length,当写入了 length 个字节或写完了 string 今后,写入就会中断,视乎先碰着哪一种情形。
fwrite() 前往写入的字符数,呈现毛病时则前往 FALSE 。
相干参考官方网站: 文件参考
3、处理计划
思绪:开启 ob_start缓冲,当已调出数据的时分获得 ob_get_contents,然后生成静态页,ob_end_clean排除缓冲.ok,就这么来,来看一个例子(php+mysql的联合):
创立数据库:
CREATE TABLE `bihtml` (
  `id` int(11) NOT NULL auto_increment,
  `szdtitle` varchar(16) NOT NULL,
  `szdcontent` text NOT NULL,
  PRIMARY KEY  (`id`)  
) TYPE=MyISAM;
获得以后的ID,并导入模板:
<P>
<P>ob_start();
$id=_POST['id']
if(!isset($id)&&is_integer($id))
{
@$db=new mysqli('localhost','root','admin','bihtml');
$result=$db->fetch_one_array("select  * from szd_bi where id='$id'");
   if(!empty($result))
   {
   $tmp->assign(array(
    "Szdtitle",htmlspecialchars($result['titles']),
    "Szdcontent",$result['titles']));
   }
$tpl->display('default_1.tpl');
$this_my_f= ob_get_contents(); //此处关头
ob_end_clean();
$filename = "$id.html";
if(tohtmlfile_cjjer($filename,$this_my_f))
echo "生成胜利 $filename";
else
echo "生成辨认";
}
}
//把生成文件的进程写出函数
function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
{
if (is_file ($file_cjjer_name)){
  @unlink ($file_cjjer_name);
}
$cjjer_handle = fopen ($file_cjjer_name,"w");
if (!is_writable ($file_cjjer_name)){
  return false;
}
if (!fwrite ($cjjer_handle,$file_cjjer_content)){
  return false;
}
fclose ($cjjer_handle); //封闭指针
return $file_cjjer_name;
}

4、申明事项
1: 普通建议办理员添加数据的时分就生成静态页面,可以思索纪录生成的文件名次和途径.
2: php次要是    ob_starts()和 ob_get_contents,生成静态页面的时分很有效,固然也能够思索调出数据库直代替换模板外面的变量也是可以的.
3: 次要的模板利用smarty,phplib都是可以的,smarty利用对照简略单纯.
给你的建议是,有些最常用的语句是需要记住的 比如if for while这些、其他的一般语句你只要知道有这个函数或者有这个功能就可以了,当你用的时候你可以凭借记忆搜索就可以了。
沙发
发表于 2015-2-4 07:50:29 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
简单生活 该用户已被删除
板凳
发表于 2015-2-11 07:03:34 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
谁可相欹 该用户已被删除
地板
发表于 2015-2-22 03:48:11 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
第二个灵魂 该用户已被删除
5#
发表于 2015-3-6 23:04:00 | 只看该作者
当然这种网站的会员费就几十块钱。
深爱那片海 该用户已被删除
6#
 楼主| 发表于 2015-3-8 02:33:08 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
因胸联盟 该用户已被删除
7#
发表于 2015-3-15 19:52:19 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
兰色精灵 该用户已被删除
8#
发表于 2015-3-22 03:10:23 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
admin 该用户已被删除
9#
发表于 2015-4-1 15:09:02 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
飘灵儿 该用户已被删除
10#
发表于 2015-4-15 05:07:14 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
山那边是海 该用户已被删除
11#
发表于 2015-4-22 08:45:39 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
莫相离 该用户已被删除
12#
发表于 2015-6-16 18:39:59 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
柔情似水 该用户已被删除
13#
发表于 2015-7-9 22:33:04 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
若天明 该用户已被删除
14#
发表于 2015-7-12 02:41:26 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
蒙在股里 该用户已被删除
15#
发表于 2015-7-13 18:00:52 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
飘飘悠悠 该用户已被删除
16#
发表于 2015-7-13 22:08:27 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
变相怪杰 该用户已被删除
17#
发表于 2015-7-20 03:12:48 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
若相依 该用户已被删除
18#
发表于 2015-7-22 01:40:14 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
愤怒的大鸟 该用户已被删除
19#
发表于 2015-9-22 13:33:36 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
精灵巫婆 该用户已被删除
20#
发表于 2015-9-24 06:08:47 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 02:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表