Heim Backend-Entwicklung PHP-Tutorial 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

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bedeutet „void' in Java? Was bedeutet „void' in Java? Mar 01, 2023 pm 07:19 PM

In Java bedeutet void „leer“, also „gibt nichts zurück“. Wenn die Methode deklariert wird, bedeutet dies, dass die Methode keinen Rückgabewert hat. ​void entspricht einer Wrapper-Klasse „java.lang.Void“. Die Void-Klasse wird mit final geändert und ist eine nicht instanziierbare Platzhalterklasse, die zum Speichern eines Verweises auf das Klassenobjekt verwendet wird, das das Java-Schlüsselwort void darstellt.

Welche Bedeutung hat die Verwendung des Rückgabewerts vom Typ „void' in PHP? Welche Bedeutung hat die Verwendung des Rückgabewerts vom Typ „void' in PHP? Apr 10, 2024 pm 09:21 PM

In PHP bedeutet der Rückgabewert vom Typ „void“, dass die Funktion keinen Wert zurückgibt, und wird normalerweise für Vorgänge wie das Aktualisieren von Datensätzen verwendet, die keinen Rückgabewert erfordern. Verwenden Sie das Schlüsselwort void, wenn Sie eine void-Funktion deklarieren. Beim Aufruf einer void-Funktion darf das Ergebnis keiner Variablen zugewiesen werden. Praktischer Fall: Der Rückgabewert vom Typ „void“ kann zum Aktualisieren von Datenbankdatensätzen verwendet werden, ohne dass Informationen zurückgegeben werden.

Die Funktion des Schlüsselworts void in der C-Sprache Die Funktion des Schlüsselworts void in der C-Sprache Feb 19, 2024 pm 11:33 PM

void ist in C ein spezielles Schlüsselwort, das zur Darstellung eines leeren Typs verwendet wird, also Daten ohne einen bestimmten Typ. In der C-Sprache wird void normalerweise in den folgenden drei Aspekten verwendet. Der Rückgabetyp der Funktion ist void. In der Sprache C können Funktionen unterschiedliche Rückgabetypen haben, z. B. int, float, char usw. Wenn die Funktion jedoch keinen Wert zurückgibt, kann der Rückgabetyp auf void gesetzt werden. Dies bedeutet, dass die Funktion nach Ausführung keinen bestimmten Wert zurückgibt. Zum Beispiel: voidhelloWorld()

So verstehen und lösen Sie „javascript:void(O)'-Probleme So verstehen und lösen Sie „javascript:void(O)'-Probleme Feb 19, 2024 pm 05:35 PM

Was bedeutet javascript:void(0)? Welche Lösungen gibt es für dieses Problem? Wenn wir im Internet surfen, stoßen wir manchmal auf einige Links, die nach dem Klicken nicht reagieren, sondern als „javascript:void(0)“ in der Adressleiste des Browsers angezeigt werden. Diese Frage könnte einige Webbesucher verwirren, da sie nicht wissen, was die Fehlermeldung, die im wahrsten Sinne des Wortes wie JavaScript-Code aussieht, bedeutet. Also, lasst uns das gemeinsam auspacken

Wie gibt eine C++-Funktion den Typ „void' zurück? Wie gibt eine C++-Funktion den Typ „void' zurück? Apr 20, 2024 pm 01:06 PM

Die void-Funktion in C++ gibt keinen Wert zurück und ihre Syntax lautet voidfunction_name(). Zu den häufigen Verwendungszwecken gehören: Eingabe von Benutzereingaben, z. B. Ermitteln des Alters des Benutzers und Drucken auf der Konsole.

So lösen Sie javascriptvoid(o) So lösen Sie javascriptvoid(o) Nov 23, 2023 am 11:02 AM

Lösungen für Javascriptvoid(o): 1. Auf Syntaxfehler prüfen; 3. Auf Konflikte mit anderen Codes prüfen; 5. Andere Bindungsmethoden verwenden; 7. Debugging-Tools verwenden; 8. Abhängige Bibliotheken oder Plug-Ins aktualisieren; 10. Den Code umgestalten, um Abhängigkeiten zu reduzieren; Das Beheben von javascriptvoid(0)-Fehlern erfordert eine sorgfältige Prüfung des Codes, der Ausführungsumgebung und der damit verbundenen Abhängigkeiten.

Die Rolle von Leere in der C -Sprache Die Rolle von Leere in der C -Sprache Apr 03, 2025 pm 04:12 PM

In der C -Sprache ist Void ein Schlüsselwort, das keinen Rückgabewert anzeigt. Es wird in verschiedenen Szenarien verwendet, wie z. B. eine Funktion, die keinen Rückgabewert erklärt: void print_message (); eine Funktion, die keinen Parameter deklariert: void print_message (void); Eine Funktion, die keinen Rückgabewert definiert: void print_message () {printf (& amp; quot; Hallo Welt \ n & amp; quot;); } Eine Funktion, die keinen Parameter definiert: void print_message (void) {printf (& amp; quot; Hölle

So deaktivieren Sie die Informationsausgabe in thinkphp5 So deaktivieren Sie die Informationsausgabe in thinkphp5 Jun 03, 2023 am 11:49 AM

1. Die Funktion von Info Bevor wir anfangen, Info zu schließen, müssen wir seine Funktion verstehen. Im ThinkPHP5-Framework gibt es drei Hauptformen der Informationsausgabe: Anzeige der aktuell aufgerufenen URL und Anforderungsparameter, Anzeige von Debugging-Informationen wie der SQL-Anweisungsausführung und der Laufzeit der aktuellen Seite, Ausgabe detaillierter Fehler Informationen, wenn ein Ausführungsfehler auftritt, was praktisch ist. Obwohl das Debuggen nützlich erscheint, sind die meisten Infoinformationen für echte Entwickler nicht sehr hilfreich. Oft brauchen wir eine prägnantere Ausgabe, damit wir uns besser auf die Entwicklung konzentrieren können. 2. Abschlussinformationen sind sehr einfach. Sie müssen sie nur konfigurieren

See all articles