Maison développement back-end tutoriel 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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que signifie void en Java Que signifie void en Java Mar 01, 2023 pm 07:19 PM

En Java, void signifie « vide », c'est-à-dire « ne renvoie rien ». Lorsque la méthode est déclarée, cela signifie qu'elle n'a aucune valeur de retour. void correspond à une classe wrapper "java.lang.Void". La classe Void est modifiée avec final et est une classe d'espace réservé non instanciable utilisée pour enregistrer une référence à l'objet Class qui représente le mot-clé Java void.

Quelle est l'importance de l'utilisation de la valeur de retour de type void en PHP ? Quelle est l'importance de l'utilisation de la valeur de retour de type void en PHP ? Apr 10, 2024 pm 09:21 PM

En PHP, la valeur de retour de type void signifie que la fonction ne renvoie aucune valeur et est généralement utilisée pour des opérations telles que la mise à jour d'enregistrements qui ne nécessitent pas de valeur de retour. Utilisez le mot-clé void lors de la déclaration d'une fonction void ; lors de l'appel d'une fonction void, le résultat ne doit pas être affecté à une variable. Cas pratique : la valeur de retour de type void peut être utilisée pour mettre à jour les enregistrements de la base de données sans renvoyer aucune information.

La fonction du mot clé void en langage C La fonction du mot clé void en langage C Feb 19, 2024 pm 11:33 PM

void en C est un mot-clé spécial utilisé pour représenter un type vide, ce qui signifie des données sans type spécifique. En langage C, void est généralement utilisé dans les trois aspects suivants. Le type de retour de la fonction est void. En langage C, les fonctions peuvent avoir différents types de retour, tels que int, float, char, etc. Cependant, si la fonction ne renvoie aucune valeur, le type de retour peut être défini sur void. Cela signifie qu'une fois la fonction exécutée, elle ne renvoie pas de valeur spécifique. Par exemple : voidhelloWorld()

Comment comprendre et résoudre les problèmes 'javascript:void(O)' Comment comprendre et résoudre les problèmes 'javascript:void(O)' Feb 19, 2024 pm 05:35 PM

Que signifie javascript:void(0) ? Quelles sont les solutions à ce problème ? Lorsque nous naviguons sur le Web, nous rencontrons parfois des liens qui ne répondent pas après avoir cliqué, mais qui s'affichent sous la forme "javascript:void(0)" dans la barre d'adresse du navigateur. Cette question peut dérouter certains visiteurs Web car ils ne savent pas ce que signifie le message d'erreur, qui ressemble littéralement à du code JavaScript. Alors, déballons cela ensemble

Comment une fonction C++ renvoie-t-elle le type void ? Comment une fonction C++ renvoie-t-elle le type void ? Apr 20, 2024 pm 01:06 PM

La fonction void en C++ ne renvoie aucune valeur et sa syntaxe est voidfunction_name(). Les utilisations courantes incluent : Saisir les entrées de l'utilisateur, comme obtenir l'âge de l'utilisateur et l'imprimer sur la console.

Comment résoudre javascriptvoid(o) Comment résoudre javascriptvoid(o) Nov 23, 2023 am 11:02 AM

Solutions à javascriptvoid(o) : 1. Vérifiez les erreurs de syntaxe ; 2. Assurez l'environnement d'exécution correct ; 3. Vérifiez les conflits avec d'autres codes ; 5. Utilisez d'autres méthodes de liaison ; 7. Utiliser les outils de débogage ; 8. Mettre à jour les bibliothèques ou plug-ins dépendants ; 9. Vérifier l'encodage des caractères ; 10. Refactoriser le code pour réduire les dépendances. La résolution des erreurs javascriptvoid(0) nécessite une inspection minutieuse du code, de l'environnement d'exécution et des dépendances associées.

Le rôle du vide dans la langue C Le rôle du vide dans la langue C Apr 03, 2025 pm 04:12 PM

Dans le langage C, void est un mot-clé qui n'indique aucune valeur de retour. Il est utilisé dans divers scénarios, tels que: une fonction qui ne déclare aucune valeur de retour: void print_message (); Une fonction qui ne déclare aucun paramètre: void print_message (void); Une fonction qui ne définit aucune valeur de retour: void print_message () {printf (& amp; quot; bonjour world \ n & amp; quot;); } Une fonction qui ne définit aucun paramètre: void print_message (void) {printf (& amp; quot; hell

Comment désactiver la sortie d'informations dans thinkphp5 Comment désactiver la sortie d'informations dans thinkphp5 Jun 03, 2023 am 11:49 AM

1. La fonction d'info Avant de commencer à fermer info, nous devons comprendre sa fonction. Dans le framework ThinkPHP5, il existe trois formes principales de sortie d'informations : l'affichage de l'URL actuellement consultée et des paramètres de requête ; l'affichage des informations de débogage telles que l'exécution de l'instruction SQL et la durée d'exécution de la page actuelle en bas de la page ; informations lorsqu'une erreur d'exécution se produit, ce qui est pratique Bien que le débogage semble utile, la plupart des informations ne sont pas très utiles aux vrais développeurs. Souvent, nous avons besoin de résultats plus concis afin de pouvoir mieux nous concentrer sur le développement. 2. Fermer les informations est très simple. Il vous suffit de configurer.

See all articles