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