仓酷云

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

[学习教程] PHP网页设计php 缓存机制:输入把持

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。1.运转时设置(php.ini)
output_buffering=Off
display_errors=On

2.函数申明
(1)boolob_start([callback$output_callback[,int$chunk_size[,bool$erase]]])
此函数将翻开输入缓冲。当输入缓冲是活泼的时分,没有输入能从剧本送出(除http标头外),相反输入的内容被存储在外部缓冲区中。外部缓冲区的内容能够用ob_get_contents()函数复制到一个字符串变量中。想要输入存储在外部缓冲区中的内容,可使用ob_end_flush()函数。别的,利用ob_end_clean()函数会寂静抛弃失落缓冲区的内容。

01<?php02functioncallback($buffer){03//replacealltheappleswithoranges04return(str_replace("apples","oranges",$buffer));05}06ob_start("callback");07?>08<html>09<body>10<p>Itslikecomparingapplestooranges.</p>11</body>12</html>13<?php14ob_end_flush();15?>1617输入:18<html>19<body>20<p>Itslikecomparingorangestooranges.</p>21</body>22</html>
(2)stringob_get_contents(void)
只是失掉输入缓冲区的内容,但不扫除它,大概假如输入缓冲区有效将前往FALSE。

01<?php02ob_start();0304echo"Hello";05$out1=ob_get_contents();0607echo"World";08$out2=ob_get_contents();0910ob_end_clean();11var_dump($out1,$out2);12?>13输入:string(6)"Hello"string(11)"HelloWorld"1415<?php16//Level017ob_start();18echo"Hello";1920//Level121ob_start();22echo"HelloWorld";23$out2=ob_get_contents();24ob_end_clean();2526//Backtolevel027echo"Galaxy";28$out1=ob_get_contents();29ob_end_clean();3031//Justoutput32var_dump($out1,$out2);33?>34输入:string(12)"HelloGalaxy"string(11)"HelloWorld"
(3)intob_get_length(void)
前往输入缓冲区内容的长度;大概前往FALSE——假如没有起感化的缓冲区。

1<?php2ob_start();3echo"Hello";4$len1=ob_get_length();5echo$len1;6?>7输入:6
(4)intob_get_level(void)
前往嵌套的输入缓冲处置程序的级别;大概是,假如输入缓冲区不起感化,前往零。

01<?php02echoob_get_level();//-->103?>04<?php05ob_end_clean();06echoob_get_level();//-->007?>08<?php09echoob_get_level();//110ob_start();11echo"Hello";12echoob_get_level();//21314ob_start();15echo"HelloWorld";16echoob_get_level();//317$out2=ob_get_contents();18ob_end_clean();1920echo"Galaxy";21$out1=ob_get_contents();22ob_end_clean();23echoob_get_level();//12425var_dump($out1,$out2);26?>27输入:11string(13)"Hello2Galaxy"string(12)"HelloWorld3"
(5)stringob_get_clean(void)
失掉以后缓冲区的内容并删除以后输入缓冲区。假如输入缓冲区不是活泼的,即前往FALSE。
ob_get_clean()本色上是一同实行了ob_get_contents()和ob_end_clean()。

01<?php02ob_start();03echo"1";04$content=ob_get_clean();0506ob_start();//ThisisNECESSARYforthenextob_get_clean()toworkasintended.07echo"2";08$content.=ob_get_clean();0910echo$content;11?>12输入:12
(6)boolob_end_clean(void)
此函数抛弃最顶层输入缓冲区的内容并封闭这个缓冲区。假如想要进一步处置缓冲区的内容,必需在ob_end_clean()之前挪用ob_get_contents(),由于当挪用ob_end_clean()时缓冲区内容将被抛弃。
前往值:乐成时前往TRUE,大概在失利时前往FALSE。毛病的缘故原由起首是,在挪用时没有一个起感化的缓冲区,大概是由于某些缘故原由缓冲区不克不及被删除(大概对特别缓冲区而言)。
毛病/非常:假如函数失利了,将激发一个E_NOTICE非常。
(7)stringob_get_flush(void)
前往输入缓冲区的内容,并封闭输入缓冲区;假如没有起感化的输入缓冲区,前往FALSE。

01<?php02//usingoutput_buffering=On03print_r(ob_list_handlers());0405//savebufferinafile06$buffer=ob_get_flush();07file_put_contents(buffer.txt,$buffer);0809print_r(ob_list_handlers());10?><span>输入:</span><spanstyle="font-size:9pt;line-height:1.5;">Array</span><span>(</span><span>[0]=>defaultoutputhandler</span><span>)</span><span>Array</span><span>(</span><span>)</span>
(8)boolob_end_flush(void)
这个函数将送出最顶层缓冲区的内容(假如里边有内容的话),并封闭缓冲区。假如想进一步处置缓冲区中的内容,必需在ob_end_flush()之前挪用ob_get_contents(),由于在挪用ob_end_flush()后缓冲区内容被抛弃。
注重:这个函数与ob_get_flush()类似,分歧的是ob_get_flush()会把缓冲区中的内容作为字符串前往。
前往值:乐成时前往TRUE,大概在失利时前往FALSE.毛病的缘故原由起首是,在挪用时没有一个起感化的缓冲区,大概是由于某些缘故原由缓冲区不克不及被删除(大概对特别缓冲区而言)。
毛病/非常:假如函数失利了,将激发一个E_NOTICE非常。

(9)voidob_clean(void)
此函数用来抛弃输入缓冲区中的内容。
此函数不会烧毁输入缓冲区,而像ob_end_clean()函数会烧毁输入缓冲区。

(10)voidob_flush(void)
这个函数将送出缓冲区的内容(假如里边有内容的话)。假如想进一步处置缓冲区中的内容,必需在ob_flush()之前挪用ob_get_contents(),由于在挪用ob_flush()以后缓冲区内容将被抛弃。
此函数不会烧毁输入缓冲区,而像ob_end_flush()函数会烧毁缓冲区。

(11)voidflush(void)
革新PHP程序的缓冲,而不管PHP实行在何种情形下(CGI,web服务器等等)。该函数将以后为止程序的一切输入发送到用户的扫瞄器。
flush()函数不会对服务器或客户端扫瞄器的缓存形式发生影响。因而,必需同时利用ob_flush()和flush()函数来革新输入缓冲。
一般web服务器程序,出格是Win32下的web服务器程序,在发送了局到扫瞄器之前,仍旧会缓存剧本的输入,直到程序停止为止。
有些Apache的模块,好比mod_gzip,大概本人举行输入缓存,这将招致flush()函数发生的了局不会当即被发送到客户端扫瞄器。乃至扫瞄器也会在显现之前,缓存吸收到的内容。比方Netscape扫瞄器会在承受到换行或html标志的开首之前缓存内容,而且在承受到</table>标志之前,不会显现出全部表格。
一些版本的MicrosoftInternetExplorer只要当承受到的256个字节今后才入手下手显现该页面,以是必需发送一些分外的空格来让这些扫瞄器显现页面内容。


3.总结
flush—革新输入缓冲
ob_clean—清空(擦失落)输入缓冲区
ob_end_clean—清空(擦除)缓冲区并封闭输入缓冲
ob_end_flush—冲洗出(送出)输入缓冲区内容并封闭缓冲
ob_flush—冲洗出(送出)输入缓冲区中的内容
ob_get_clean—失掉以后缓冲区的内容并删除以后输入缓冲
ob_get_contents—前往输入缓冲区的内容
ob_get_flush—刷出(送出)缓冲区内容,以字符串情势前往内容,并封闭输入缓冲区
ob_get_length—前往输入缓冲区内容的长度
ob_get_level—前往输入缓冲机制的嵌套级别
ob_start—翻开输入把持缓冲
可以在书上很方便地做标记,及时记下自己的心得体会。
再见西城 该用户已被删除
沙发
发表于 2015-1-19 06:14:16 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-27 23:59:27 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
爱飞 该用户已被删除
地板
发表于 2015-2-5 16:37:33 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
海妖 该用户已被删除
5#
发表于 2015-2-13 00:01:05 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
兰色精灵 该用户已被删除
6#
发表于 2015-3-3 11:47:02 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
admin 该用户已被删除
7#
发表于 2015-3-11 11:02:37 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
透明 该用户已被删除
8#
发表于 2015-3-18 12:46:24 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
金色的骷髅 该用户已被删除
9#
 楼主| 发表于 2015-3-26 02:20:13 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-20 18:46

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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