首页 后端开发 php教程 PHP中对缓冲区的统制实现代码

PHP中对缓冲区的统制实现代码

Jun 13, 2016 am 11:38 AM
info void

PHP中对缓冲区的控制实现代码

大家在使用PHP的过程中不免要使用到header和setcookie两个函数,这两个函数会发送一段文件头信息给浏览器,但是如果在使用这两个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错,提示信息如下:“Header had all ready send by”!那有什么方法可以在有了输出的情况下面在发送文件头信息呢?在PHP 4.0里面加入了缓冲区控制的几个函数,使用这些函数可以帮我们解决很多问题。

一、 相关函数简介:

1、Flush:输出缓冲区内的内容并且删除缓冲区。

函数格式:flush()

说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区

函数格式:void ob_start(void)

说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或者使用ob_end_clean()来输出缓冲区的内容。

3 、ob_get_contents :返回内部缓冲区的内容。

使用方法:string ob_get_contents(void)

说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。

4、ob_get_length:返回内部缓冲区的长度。

使用方法:int ob_get_length(void)

说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。

5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。

使用方法:void ob_end_flush(void)

说明:这个函数发送输出缓冲区的内容(如果有的话)。

6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区

使用方法:void ob_end_clean(void)

说明:这个函数不会输出内部缓冲区的内容!

7、ob_implicit_flush:打开或关闭绝对刷新

使用方法:void ob_implicit_flush ([int flag])

说明:使用过Perl的人都知道?$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出。

二、使用例子:

在一开始,笔者说了用缓冲区控制的函数可以防止文件头发送信息出错,下面就是一个例子:

?

.代码如下:

//PHP提示符
ob_start(); //打开缓冲区
echo "Hello/n"; //输出
header('location:gotourl.php'); //把浏览器重定向到gotourl.php
?>

?

如果去掉ob_start,PHP就会提示在文件的第4行出错(出错信息如前面所示),但是加上ob_start,就不会提示出错,原因是当打开了缓冲区,echo后面的字符不会输出到浏览器,而是保留在服务器,直到你使用flush或者ob_end_flush才会输出,所以并不会有任何文件头输出的错误!

下面再给出一个很经典的用途:

比如你用得到服务器和客户端的设置信息,但是这个信息会因为客户端的不同而不同,如果想要保存phpinfo()函数的输出怎么办呢?在没有缓冲区控制之前,可以说一点办法也没有,但是有了缓冲区的控制,我们可以轻松的解决:

?

.代码如下:


ob_start(); //打开缓冲区
phpinfo(); //使用phpinfo函数
?$info=ob_get_contents(); //得到缓冲区的内容并且赋值给?$info
?$file=fopen('info.txt','w'); //打开文件info.txt
fwrite(?$file,?$info); //写入信息到info.txt
fclose(?$file); //关闭文件info.txt
?>

?


用以上的方法,就可以把不同用户的phpinfo信息保存下来,这在以前恐怕没有办法办到!其实上面就是将一些“过程”转化为“函数”的方法!


另:验证码生成的图像,在将图像输出到浏览器里,要清除下缓存区
????????//清除缓存区
??????? ob_clean();
??????? //设置文件头;?
??????? Header("Content-type: image/PNG");

??????? //以PNG格式将图像输出到浏览器或文件;
??????? ImagePNG($distortion_im);

??????? //销毁一图像,释放与image关联的内存;
??????? ImageDestroy($distortion_im);
??????? ImageDestroy($im);

?

来源:http://www.poluoluo.com/jzxy/201309/243650.html

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
<🎜>掩盖:探险33-如何获得完美的色度催化剂
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1430
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
java中void是什么意思 java中void是什么意思 Mar 01, 2023 pm 07:19 PM

在java中,void是“空”的意思,即“什么都不返回”,在方法申明的时候表示该方法没有返回值。​void对应着一个包装类“java.lang.Void”,该Void类是用final修饰的,是一个不可实例化的占位符类,用来保存一个引用代表了Java关键字void的Class对象。

PHP 中使用 void 类型返回值有什么意义? PHP 中使用 void 类型返回值有什么意义? Apr 10, 2024 pm 09:21 PM

在PHP中,void类型返回值表示函数不返回任何值,通常用于更新记录等不需要返回值的操作。声明void函数时使用void关键字;调用void函数时,不得将结果分配给变量。实战案例:void类型返回值可用于更新数据库记录,无需返回任何信息。

C语言中的void关键字的作用 C语言中的void关键字的作用 Feb 19, 2024 pm 11:33 PM

C中的void是一个特殊的关键字,用来表示空类型,也就是指没有具体类型的数据。在C语言中,void通常用于以下三个方面。函数返回类型为void在C语言中,函数可以有不同的返回类型,例如int、float、char等。然而,如果函数不返回任何值,则可以将返回类型设为void。这意味着函数执行完毕后,并不返回具体的数值。例如:voidhelloWorld()

如何理解和解决'javascript:void(O)”的问题 如何理解和解决'javascript:void(O)”的问题 Feb 19, 2024 pm 05:35 PM

javascript:void(0)是什么意思?解决这个问题的方法有哪些?当我们在浏览网页时,有时会遇到一些链接点击后并没有任何响应,而在浏览器的地址栏中却显示为"javascript:void(0)"的情况。这个问题可能会让一些网页访问者感到困惑,因为他们不知道这个字面上看起来像是JavaScript代码的错误信息到底是什么意思。那么,让我们来一起解开这个

C语言中void的作用 C语言中void的作用 Apr 03, 2025 pm 04:12 PM

在 C 语言中,void 是一个关键字,表示无返回值。它被用于各种场景,例如:声明无返回值的函数:void print_message();声明无参数的函数:void print_message(void);定义无返回值的函数:void print_message() { printf(&amp;quot;Hello world\n&amp;quot;); }定义无参数的函数:void print_message(void) { printf(&amp;quot;Hell

C++ 函数如何返回 void 类型? C++ 函数如何返回 void 类型? Apr 20, 2024 pm 01:06 PM

C++中void函数不返回任何值,它的语法为voidfunction_name()。常见用途包括:输入用户输入,如获取用户的年龄并打印到控制台。

javascriptvoid(o)怎么解决 javascriptvoid(o)怎么解决 Nov 23, 2023 am 11:02 AM

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源;7、使用调试工具;8、更新依赖库或插件;9、检查字符编码;10、重构代码以减少依赖。解决 javascriptvoid(0)出现的错误需要仔细检查代码、执行环境和相关依赖。

thinkphp5如何关闭info信息输出 thinkphp5如何关闭info信息输出 Jun 03, 2023 am 11:49 AM

一、info的作用在开始关闭info之前,我们需要了解一下它的作用。在ThinkPHP5框架中,info信息输出主要有三种形式:展示当前访问的URL和请求参数在页面底部展示当前页面的SQL语句执行情况和运行时间等调试信息在执行错误时,输出详细的错误信息,方便调试虽然看起来很有用,但对于真正的开发者而言,大多数的info信息并不是非常有帮助的。通常,我们需要的是一些更简洁的输出,以便更好地专注于开发。二、关闭info关闭info很简单,只需要在配置

See all articles