ホームページ php教程 php手册 PHP中对缓冲区控制的代码

PHP中对缓冲区控制的代码

Jun 06, 2016 pm 07:48 PM
linux php コード コントロール コミュニティ バッファ 入力

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 大家在使用PHP的过程中不免要使用到header和setcookie两个函数,这两个函数会发送一段文件头信息给浏览器,但是如果在使用这两个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  大家在使用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

  //edit:

  ?>

  如果去掉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信息保存下来,这在以前恐怕没有办法办到!其实上面就是将一些"过程"转化为"函数"的方法!

PHP中对缓冲区控制的代码

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Feb 19, 2025 pm 04:54 PM

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールする方法

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

PHPでHTML/XMLを解析および処理するにはどうすればよいですか?

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

母音を文字列にカウントするPHPプログラム

Bitget公式ウェブサイトのインストール(2025初心者ガイド) Bitget公式ウェブサイトのインストール(2025初心者ガイド) Feb 21, 2025 pm 08:42 PM

Bitget公式ウェブサイトのインストール(2025初心者ガイド)

OUYI OKXインストールパッケージが直接含まれています OUYI OKXインストールパッケージが直接含まれています Feb 21, 2025 pm 08:00 PM

OUYI OKXインストールパッケージが直接含まれています

See all articles