線上服務(wù)咨詢
Article/文章
記錄成長點滴 分享您我感悟
您當前位置>首頁 > 知識 > 網(wǎng)站建設(shè)
php
發(fā)表時間:2019-07-30 16:33:59
文章來源:沈陽軟件開發(fā)
標簽:網(wǎng)站建設(shè) 小程序開發(fā) 小程序制作 微信小程序開發(fā) 公眾號開發(fā) 微信公眾號開發(fā) 網(wǎng)頁設(shè)計 網(wǎng)站優(yōu)化 網(wǎng)站排名 網(wǎng)站設(shè)計 微信小程序設(shè)計 小程序定制 微信小程序定制
瀏覽次數(shù):0
中的輸出控制方法 緩沖輸出<phpfor($ i=10; $ i> 0; $ i - ){echo $ i; flush(); sleep(1);}?>這個函數(shù)將根據(jù)php手冊當前。程序的所有輸出都發(fā)送到用戶的瀏覽器。上面的代碼應(yīng)該每秒輸出$ i。但實際上,情況并非如此??赡苁窃?0秒之后,所有輸出同時出現(xiàn)。好的,讓我們更改此代碼并將其更改為<phpob_end_clean(); //修改部分($ i=10; $ i> 0; $ i - ){echo $ i; flush(); sleep(1 );}}>嘿,添加了這句話ob_end_clean();沒關(guān)系。實際上,我們也用ob_end_flush()替換了ob_end_clean()。我會再改變它。 <phpfor($ i=10; $ i> 0; $ i - ){echo $ i; ob_flush(); //修改flush()的一部分; sleep(1);}?>運行它,是沒有找到$ i也每秒輸出一次?為什么是這樣?別擔心,讓我們來看看php.ini。打開php.ini并搜索output_buffering。我們將看到像這樣的設(shè)置output_buffering=4096。就像它的名稱output_buffering一樣,此設(shè)置的目的是緩沖輸出,緩沖區(qū)大小為4096bytes。在我們的第一個代碼中,原因不是預期的,而是因為這個output_buffering緩沖了那些輸出。如果它沒有達到4096字節(jié)或腳本結(jié)束,則不會發(fā)送輸出。 ob_end_clean()和ob_end_flush()在第二段代碼中的作用是終止緩沖區(qū)。這樣,您不必等到發(fā)送出去之前有4096字節(jié)的緩沖區(qū)。在第三個代碼中,我們使用ob_flush(),它用于發(fā)送緩沖數(shù)據(jù),但它不會終止緩沖區(qū),因此必須在每次flush()之前使用它。如果你不想使用ob_end_clean(),ob_end_flush()和ob_flush(),我們必須將php.ini中的output_buffering設(shè)置得足夠小,例如為0.應(yīng)該注意的是,如果你打算使用ini_set (“output_buffering”,“0”)在腳本中設(shè)置它,然后請停止,這種方法是不可接受的。由于緩沖區(qū)設(shè)置已在腳本開頭加載,因此緩沖開始。也許你會問,因為ob_flush()是發(fā)送緩沖數(shù)據(jù),為什么你需要使用flush()?直接用以下代碼? <phpfor($ i=10; $ i> 0; $ i - ){echo $ i; ob_flush(); sleep(1);}?>請注意ob_flush()和flush()之間的區(qū)別。前者是從PHP緩沖區(qū)釋放數(shù)據(jù),后者是發(fā)送不在緩沖區(qū)中或釋放到瀏覽器中的數(shù)據(jù)。因此,當緩沖區(qū)存在時,我們必須同時使用ob_flush()和flush()。這里不是沖洗()必不可少的嗎?不,我們有另一種方法可以在數(shù)據(jù)可用時立即將數(shù)據(jù)發(fā)送到瀏覽器。以下兩段代碼不需要使用flush()。 (當你將output_buffering設(shè)置為0時,既不需要ob_flush()也不需要ob_end_clean())<phpob_implicit_flush(true); for($ i=10; $ i> 0; $ i - ){Echo $ i; ob_flush (); sleep(1);}?><phpob_end_clean(); ob_implicit_flush(true); for($ i=10; $ i> 0; $ i--)[Page] {Echo $ i; sleep (1);}}>查看上面的ob_implicit_flush(true),只要有輸出,此函數(shù)就會強制將輸出發(fā)送到瀏覽器。這樣,您不需要在每個echo(echo)之后向瀏覽器發(fā)送flush()。
網(wǎng)站建設(shè),小程序開發(fā),小程序制作,微信小程序開發(fā),公眾號開發(fā),微信公眾號開發(fā),網(wǎng)頁設(shè)計,網(wǎng)站優(yōu)化,網(wǎng)站排名,網(wǎng)站設(shè)計,微信小程序設(shè)計,小程序定制,微信小程序定制