电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

php 輸出緩沖 Output Control用法實例詳解

瀏覽:118日期:2022-09-11 11:25:52

本文實例講述了php 輸出緩沖 Output Control用法。分享給大家供大家參考,具體如下:

關于php的輸出緩沖,首先要說明的是什么是緩沖(buffer),比如我們通過記事本在編輯文件的時候,并不是我們輸入了內容,系統就會立刻向磁盤中寫入數據。只有我們在保存文件后,系統才會向磁盤寫入數據。而之前我們輸入的內容全部保存在了文件緩沖區中,只有當緩沖區寫滿或者執行保存時,數據才會寫入磁盤。

而php的輸出緩沖也一樣,當我們通過echo,print等函數輸出時,這些內容首先會保存在output buffer中,php腳本執行完畢或者強制執行緩沖輸出操作,內容才會在瀏覽器上顯示。

現在的php版本默認是開啟output buffer的,在php.ini

output_buffering = 4096

4096表示緩沖區的大小。

<?phpfor($i = 0; $i< 10; ++$i) { echo $i, ’<br />’; sleep(1);}?>

代碼如上,執行的效果并不是我們想要的,瀏覽器在等待了10秒后,一次性的把0-9輸出在了頁面上。

原因:默認開啟了輸出緩沖,當們echo 0;時,實際上是保存在了ob中,然后等待1秒,繼續echo 1;直到for循環執行完畢,整個php腳本執行結束,這時php會把緩沖內容一次性發送到瀏覽器。

那如何才能輸出一個數,等待1秒后,再輸出下一個數?

方法如下:

1、關閉輸出緩沖區2、自已控制輸出緩沖

<?php//關閉緩沖區ob_end_clean();for($i = 0; $i< 10; ++$i) { echo $i, ’<br />’; //如果不加flush,則不是一個一個輸出 flush(); sleep(1);}?>

為什么不加flush,程序就不會一個一個輸出,php并不是直接輸出給瀏覽器的,而是服務器,php的緩沖關了,但服務器的緩沖還有,所以調用flush把輸出發送到用戶瀏覽器。

<?phpfor($i = 0; $i< 10; ++$i) { echo $i, ’<br />’; ob_flush(); flush(); sleep(1);}?>

這段代碼跟上面的代碼效果是一樣的,我們通過ob_flush刷新php緩沖,并清空緩沖區內容(但不會關閉緩沖區)。然后調用flush刷新服務器緩沖,輸出到瀏覽器。

ob其他函數的介紹:

<?phpob_start();for($i = 0; $i< 10; ++$i) { echo $i, ’<br />’;}$str = ob_get_contents();file_put_contents(’./output.txt’, $str);ob_end_clean();//注意,這里的ob_end_clean()只是關閉了ob_start()打開的緩沖for($i = 0; $i< 10; ++$i) { echo $i, ’<br />’; flush(); sleep(1);}?>

請看上述代碼:我們ob_start()開啟一個緩沖,for循環輸出的內容全部放在了緩沖區中,通過ob_get_contents()來獲取緩沖區的內容(只是得到緩沖區內容,緩沖區中的內容還存在)。然后ob_end_clean()清空并關閉緩沖。但下面的for循環輸出并沒有像我們想的那樣一個一個輸出。因為php允許存在多個緩沖區,我們這里有兩個緩沖區,一個是php已經打開的,一個是我們自已調用ob_start()打開的。

<?phpob_start();for($i = 0; $i< 10; ++$i) { echo $i, ’<br />’;}$str = ob_get_contents();file_put_contents(’./output.txt’, $str);ob_end_clean();ob_end_clean();for($i = 0; $i< 10; ++$i) { echo $i, ’<br />’; flush(); sleep(1);}?>

修改成這樣,輸出結果就是我們想要的了。

<?phpob_start();var_dump(ob_get_level());ob_start();var_dump(ob_get_level());ob_end_flush();ob_end_flush();?>

我們通過ob_get_level()獲取緩沖區的嵌套級別,分別輸出int(2) int(3), ob_end_flush()送出緩沖區內容并關閉緩沖。

<?phpecho ’111’;echo ’222’;ob_clean();echo ’333’;?>

ob_clean()會清空緩沖區,但不會關閉緩沖區。而ob_end_clean()會清空并且關閉。

<?phpob_start();echo ’111’;echo ’222’;$str = ob_get_clean();echo $str;echo ’333’;$str = ob_get_flush();file_put_contents(’str.txt’, $str);for($i = 0; $i < 10; ++$i) { echo $i, ’<br />’; flush(); sleep(1);}?>

代碼如下,ob_start()開啟一個緩沖,輸出111和222,放入緩沖,然后ob_get_clean()獲取緩沖內容,并半閉緩沖,返回數據。這時php已打開的緩沖并沒有關閉,然后我們把返回的數據輸出,再輸出333,通過ob_get_flush()送出緩沖內容,返回數據,并關閉緩沖(這時php的緩沖也關了),后面的for循環輸出也會一個一個輸出。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php緩存技術總結》、《php面向對象程序設計入門教程》、《PHP基本語法入門教程》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
主站蜘蛛池模板: 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 氢氧化钙设备, 氢氧化钙生产线-淄博惠琛工贸有限公司 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 浙江宝泉阀门有限公司| 亿诺千企网-企业核心产品贸易| 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 冷热冲击试验箱_温度冲击试验箱价格_冷热冲击箱排名_林频厂家 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 深圳货架厂家_金丽声精品货架_广东金丽声展示设备有限公司官网 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 黑龙江「京科脑康」医院-哈尔滨失眠医院_哈尔滨治疗抑郁症医院_哈尔滨精神心理医院 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 散热器厂家_暖气片_米德尔顿散热器 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 防爆电机-高压防爆电机-ybx4电动机厂家-河南省南洋防爆电机有限公司 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 顺辉瓷砖-大国品牌-中国顺辉 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 体坛网_体坛+_体坛周报新闻客户端 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 云南成人高考网| 西安文都考研官网_西安考研辅导班_考研培训机构_西安在职考研培训 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 钢木实验台-全钢实验台-化验室通风柜-实验室装修厂家-杭州博扬实验设备 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 南京租车,南京汽车租赁,南京包车,南京会议租车-南京七熹租车 |