Table des matières
php中flush和ob_flush的区别
php
flush
ob_flush
区别
杂谈
Maison php教程 php手册 php中flush和ob

php中flush和ob

Jun 06, 2016 pm 08:01 PM
php 区别

php中flush和ob_flush的区别 (2011-11-11 15:31:17) ▼ php flush ob_flush 区别 杂谈 分类: PHP buffer ---- flush() buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的设备之间传

php中flush和ob_flush的区别

(2011-11-11 15:31:17)

php中flush和ob

php

flush

ob_flush

区别

杂谈

分类:PHP
buffer ---- flush()

 

buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入一个字符,操作系统并不会立即把这个字符直接写入到磁盘,而是先写入到buffer,当写满了一个buffer的时候,才会把buffer中的数据写入磁盘,当然当调用内核函数flush()的时候,强制要求把buffer中的脏数据写回磁盘。

同样的道理,当执行echo,print的时 候,输出并没有立即通过tcp传给客户端浏览器显示, 而是将数据写入phpbuffer。php output_buffering机制,意味在tcpbuffer之前,建立了一新的队列,数据必须经过该队列。当一个php buffer写满的时候,脚本进程会将phpbuffer中的输出数据交给系统内核交由tcp传给浏览器显示。所以,数据会依次写到这几个地方echo/pring-> php buffer -> tcp buffer-> browser

 

php output_buffering --- ob_flush()

默 认情况下,phpbuffer是开启的,而且该buffer默认值是4096,即1kb。你可以通过在php.ini配置文件中找到output_buffering配置.当echo,print等输出用户数据的时候,输出数据都会写入到phpoutput_buffering中,直到output_buffering写满,会将这些数据通过tcp传送给浏览器显示。你也可以通过ob_start()手动激活phpoutput_buffering机制,使得即便输出超过了1kb数据,也不真的把数据交给tcp传给浏览器,因为ob_start()将phpbuffer空间设置到了足够大 。只有直到脚本结束,或者调用ob_end_flush函数,才会把数据发送给客户端浏览器。

 

 

这两个函数的使用怕是很多人最迷惑的一个问题,手册上对两个函数的解释也语焉不详,没有明确的指出它们的区别,似乎二者的功能都是刷新输出缓存。但在我们文章一开始的代码中如果讲fush()替换成ob_flush(),程序就再不能正确执行了。显然,它们是有区别的,否则也手册中直接说明其中一个是另外一个函数的别名即可了,没必要分别说明。那么它们的区别到底是什么呢?

在没有开启缓存时,脚本输出的内容都在服务器端处于等待输出的状态 ,flush()可以将等待输出的内容立即发送到客户端。


开 启缓存后,脚本输出的内容存入了输出缓存中 ,这时没有处于等待输出状态的内容,你直接使用flush()不会向客户端发出任何内容。而ob_flush()的作用就是将本来存在输出缓存中的内容取出来,设置为等待输出状态,但不会直接发送到客户端 ,这时你就需要先使用ob_flush()再使用flush(),客户端才能立即获得脚本的输出。

一. flush和ob_flush的正确顺序,正确应是,先ob_flush再flush,如下: 
ob_flush();
flush();
如果Web服务器的操作系统是windows系统,那顺序颠倒或者不使用ob_flush()也不会出现问题。[有待求证 ]但是在Linux系统上就无法刷新输出缓冲。

output buffering函数

1.bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]])
激活output_buffering机制。一旦激活,脚本输出不再直接出给浏览器,而是先暂时写入php buffer内存区域。

php默认开启output_buffering机制,只不过,通过调用ob_start()函数据output_buffering值扩展到足够大 。也可以指定$chunk_size来指定output_buffering的值。$chunk_size默认值是0,表示直到脚本运行结束,phpbuffer中的数据才会发送到浏览器。如果你设置了$chunk_size的大小 ,则表示只要buffer中数据长度达到了该值,就会将buffer中的数据发送给浏览器。

当然,你可以通过指定$ouput_callback,来处理buffer中的数据。比如函数ob_gzhandler,将buffer中的数据压缩后再传送给浏览器。

第三个参数:是否擦除缓存,可选,默认是true,如果设置为false,则在脚本执行结束前,缓存都不会被清除。

2.ob_get_contents
获取一份phpbuffer中的数据拷贝。值得注意的是,你应该在ob_end_clean()函数调用前调用该函数,否则ob_get_contents()返回一个空字符中。

 

可以使用ob_get_contents()以字符串形式获取服务端缓存的数据,

使用ob_end_flush()则会输出被缓存起来的数据,并关闭缓存。
而使用ob_end_clean()则会静默的清除服务端缓存的数据,而不会有任何数据或其他行为。


服务端的缓存是堆叠起来的,也就是说你在开启了ob_start()后,关闭之前,在其内部还 可以开启另外一个缓存ob_start()。

不过你也要务必保证关闭缓存的操作和开启缓存的操作数量一样多。 
ob_start()可以指定一个回调函数来处理缓存数据,如果一个ob_start()内部嵌套了另一个ob_start(),我们假定,外层的ob_start(),编号是A,内层的ob_start()编号是B,它们各自制定了一个回调函数分别是functionA和functionB,那么在缓存B中的数据输出时,它会先辈funcitonB回调函数处理,再交给外层的functionA回调函数处理,之后才能输出到客户端。

另外,手册说,对于某些web服务器,比如apache,在使用回调函数有可能会改变程序当前的工作目录,解决方法是在回调函数中自行手动把工作目录修改回来,用chdir函数,这点似乎不常遇到,遇到的时候记得去查手册吧。

 

3.ob_end_flush与ob_end_clean
这 二个函数有点相似,都会关闭ouptu_buffering机制。但不同的是,ob_end_flush只是把phpbuffer中的数据冲(flush/send)到客户端浏览器,而ob_clean_clean将phpbufeer中的数据清空(erase),但不发送给客户端浏览器。

ob_end_flush调用之前 ,phpbuffer中的数据依然存在,ob_get_contents()依然可以获取php buffer中的数据拷贝。

而ob_end_flush()调用之后 ob_get_contents()取到的是空字符串,同时浏览器也接收不到输出,即没有任何输出。

 

可以使用ob_get_contents()以字符串形式获取服务端缓存的数据,使用ob_end_flush()则会输出被缓存起来的数据,并关闭缓存。
而使用ob_end_clean()则会静默的清除服务端缓存的数据,而不会有任何数据或其他行为。
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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD

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)

Bitcoin a-t-il des actions? Bitcoin a-t-il des actions? Mar 03, 2025 pm 06:42 PM

Le marché des crypto-monnaies est en plein essor et Bitcoin, en tant que leader, a attiré l'attention de nombreux investisseurs. Beaucoup de gens sont curieux: Bitcoin a-t-il des actions? La réponse est non. Le Bitcoin lui-même n'est pas un stock, mais les investisseurs peuvent indirectement investir dans des actifs liés à Bitcoin via divers canaux, qui seront expliqués en détail dans cet article. Alternatives à l'investissement de Bitcoin: Au lieu d'investir directement dans Bitcoin, les investisseurs peuvent participer au marché Bitcoin par: Bitcoin ETF: Il s'agit d'un fonds négocié sur le marché des échanges d'actions, dont le portefeuille d'actifs contient des contrats à terme Bitcoin ou Bitcoin. Il s'agit d'une option relativement pratique pour les investisseurs habitués aux investissements en actions, sans avoir à tenir directement le bitcoin. Bitcoin Mining Company Stocks: Les activités de ces sociétés sont l'extraction de Bitcoin et tient le bitcoin

Quelle est la différence entre le trading pré-commercial et après-marché? Explication détaillée des différences entre le pré-commercialisation et le trading après le marché Quelle est la différence entre le trading pré-commercial et après-marché? Explication détaillée des différences entre le pré-commercialisation et le trading après le marché Mar 03, 2025 pm 11:54 PM

Dans les marchés financiers traditionnels, le commerce pré-commercial et après-vente fait référence aux activités de négociation en dehors de la période de négociation régulière. Bien que le marché des crypto-monnaies se négocie 24 heures sur 24, les plates-formes de trading comme Bitget offrent également des fonctionnalités similaires, en particulier certaines plateformes complètes qui échangent des actions et des crypto-monnaies en même temps. Cet article clarifiera les différences dans le trading pré-commercial et après-vente et explorera son impact sur le prix de la devise. Quatre différences majeures entre les échanges pré-commerciaux et après le marché: les principales différences entre les périodes de négociation pré-commercialisation et après le marché sont en quatre aspects: le temps de négociation, la liquidité, les fluctuations des prix et le volume de trading: le temps de négociation: les échanges pré-marché se produisent avant les débuts officiels de négociation, et le commerce après le marché est entraîné après les extrémités régulières. Liquidité: La liquidité du trading pré et après les heures

Pourquoi Bittensor est-il le 'Bitcoin' sur la piste AI? Pourquoi Bittensor est-il le 'Bitcoin' sur la piste AI? Mar 04, 2025 pm 04:06 PM

Titre original: Bittensor = Aibitcoin? Bittensor adopte un modèle de sous-réseau qui permet l'émergence de différentes solutions d'IA et inspire l'innovation à travers les jetons Tao. Bien que le marché de l'IA soit mûr, Bittensor fait face à des risques concurrentiels et peut être soumis à d'autres open source

Y a-t-il une différence entre le bitcoin sud-coréen et le bitcoin domestique? Y a-t-il une différence entre le bitcoin sud-coréen et le bitcoin domestique? Mar 05, 2025 pm 06:51 PM

Le boom des investissements Bitcoin continue de se réchauffer. Bien que la Chine soit autrefois le plus grand marché du Bitcoin, les impacts politiques ont conduit à des restrictions de transaction. Aujourd'hui, la Corée du Sud est devenue l'un des principaux marchés du Bitcoin au monde, obligeant les investisseurs à remettre en question les différences entre elle et son bitcoin national. Cet article effectuera une analyse approfondie des différences entre les marchés du Bitcoin des deux pays. L'analyse des différences entre les marchés de la Corée du Sud et la Chine. Par exemple, fin octobre 2024, le prix du bitcoin en Corée du Sud était autrefois

Proxy vertical: scénarios d'application et interprétation du potentiel perturbateur de la procuration native du cryptage Proxy vertical: scénarios d'application et interprétation du potentiel perturbateur de la procuration native du cryptage Mar 04, 2025 am 10:21 AM

Les agents de l'intelligence artificielle (AIAGENTS) s'intégrent rapidement dans les opérations quotidiennes des entreprises, des grandes entreprises aux petites entreprises, presque tous les domaines ont commencé à être utilisés, notamment les ventes, le marketing, la finance, le droit, l'informatique, la gestion de projet, la logistique, le service client et l'automatisation du flux de travail. Nous passons d'une ère de traitement manuel des données, effectuons des tâches répétitives et en utilisant des tables Excel à une ère d'opération autonome par les agents d'IA 24h / 24, ce qui améliore non seulement l'efficacité mais réduit également considérablement les coûts. Cas d'application des agents d'IA dans web2: la perspective de Ycombinator apten: un outil d'optimisation des ventes et marketing combinant la technologie AI et SMS. Bildai: un modèle qui peut lire les plans architecturaux,

Pepe a acheté et vendu de manière importante, Mutm est-il un investissement plus intelligent en 2025? Pepe a acheté et vendu de manière importante, Mutm est-il un investissement plus intelligent en 2025? Mar 03, 2025 pm 07:09 PM

Après la vague de Pepe, Mutm peut-il devenir un choix d'investissement plus stable en 2025? Pepe (Pepe) a rendu les investisseurs précoces rentables, mais ses fluctuations violentes des prix ont également fait remettre en question ses perspectives à long terme. Alors que le marché des devises mèmes continue de turbulencement, les traders commencent à se concentrer sur des projets avec des avantages plus fondamentaux, et la mutuumfinance (Mutm) en fait partie. Il s'agit d'une plate-forme de prêt décentralisée axée sur les applications financières pratiques. Contrairement à Pepe, qui s'appuie sur la spéculation spéculative, MUTM construit un écosystème de défi structuré où les utilisateurs peuvent emprunter et gagner un revenu passif. Sa pré-vente a dépassé un million de dollars américains, la première phase du taux de vente de jetons dépasse 97%, investissement précoce

Quel échange est Nexo? Quel échange est Nexo? Mar 05, 2025 pm 07:39 PM

Nexo: Non seulement c'est un échange de crypto-monnaie, mais aussi votre directeur financier numérique. Il permet aux utilisateurs d'obtenir des prêts en crypto-monnaie en tant que garantie et fournit des services pour gagner des intérêts. Alors que Nexo propose également des capacités d'achat, de vente et de rédemption de crypto-monnaie, son principal activité est la cryptographie. Cet article explorera le modèle d'exploitation et la sécurité de Nexo en profondeur pour fournir aux investisseurs une compréhension plus complète. Le modèle d'exploitation de Nexo a été fondé en 2018 et a son siège à Zug, en Suisse, et est un pionnier dans le domaine de la finance numérique. Il est différent des autres échanges centralisés et se concentre davantage sur la fourniture de services financiers complets. Les utilisateurs peuvent acheter, vendre, échanger des crypto-monnaies sans vendre des actifs et

Que signifie la fermeture d'une position de monnaie virtuelle? Identique à la vente? Comment éviter la clôture forcée des positions? Que signifie la fermeture d'une position de monnaie virtuelle? Identique à la vente? Comment éviter la clôture forcée des positions? Mar 04, 2025 am 06:51 AM

Explication détaillée des positions de clôture dans le trading de monnaie virtuelle: stratégies pour éviter le risque de liquidation. Qu'est-ce que la fermeture de la monnaie virtuelle? Des positions étroites se réfèrent aux investisseurs mettant fin aux positions existantes par le biais de négociation inversée, verrouillant ainsi les bénéfices et les pertes. Par exemple, les investisseurs occupant des positions longues (acheter) peuvent fermer leurs positions en vendant des quantités égales de monnaie virtuelle; Une opération de clôture ferme ou publie essentiellement une position d'investissement établie. La fermeture est-elle une position égale à la vente? Bien que la fermeture longue implique la vente d'opérations, la fermeture et la vente ne sont pas exactement les mêmes. Définition de position de fermeture: fin ouverte

See all articles