国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP即時實時輸出內容的程序代碼

2024-05-04 21:48:06
字體:
來源:轉載
供稿:網友

實時輸出如果放在js中我們可以直接使用settimeout來守時輸入很方便,但是如果在php中實現起來就不能這樣了,下面我來給介紹利用 ob_flush() 和 flush()函數實現即時實時輸出內容.

一般情況下,PHP都是將整個頁面全部執行完成后,才會把要輸出的內容發送回客戶端,例如如下代碼:

  1. for ($i = 0; $i < 10; $i++) { 
  2.  echo $i
  3.  sleep(1); 

這段代碼會在10秒鐘后一次性輸出“0123456789”,對于運行時間較長的PHP程序來說可能都需要即時輸出內容來查看運行情況,代碼如下:

header(“Content-type:text/html;charset=utf-8″);

設置執行時間不限時,代碼如下:

set_time_limit(0); 

清除并關閉緩沖,輸出到瀏覽器之前使用這個函數,代碼如下:

ob_end_clean(); 

控制隱式緩沖瀉出,默認off,打開時,對每個 print/echo 或者輸出命令的結果都發送到瀏覽器,代碼如下:

ob_implicit_flush(1); 

這就用到了PHP的輸出控制函數ob_flush()和flush(),我們把代碼修改成下面這樣,代碼如下:

  1. $str = 'Hello world";        
  2. echo $str . str_repeat(' ', 256);        
  3. ob_flush();        
  4. flush();       
  5. sleep(10);   
  6. echo $str

這段代碼則會馬上在屏幕上打印 Hello world,關鍵就在于第2和第3行調用的兩個函數 ob_flush() 和 flush(),這兩個函數得一起使用才能保證頁面馬上輸出Hello world,其中str_repeat(' ', 256)則是為了解決某些瀏覽器必須在接收到256個字符后才會顯示內容.

對上面函數升級,代碼如下:

  1. <?php 
  2. error_reporting(0); 
  3. set_time_limit(0); 
  4.  
  5. $buffer = ini_get('output_buffering'); 
  6. echo str_repeat(' ',$buffer+1); 
  7. ob_end_flush(); 
  8.  
  9. for($i=1;$i<100;$i++){ 
  10.     echo "$i<br>"
  11.     sleep(1); 
  12.     flush(); 
  13. }?> 

這樣,頁面就會每一秒輸出一個數字,我們可以很方便的使用PHP的輸出控制來實現頁面執行進度的顯示,不過,由于PHP頁面有執行時間限制,而且長時間執行一個頁面會對服務器造成一定的壓力.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天气| 松滋市| 洞头县| 珠海市| 论坛| 鄂尔多斯市| 通河县| 时尚| 苗栗县| 资阳市| 巴林左旗| 饶平县| 益阳市| 泗阳县| 昌都县| 金湖县| 工布江达县| 密云县| 衡南县| 金山区| 咸丰县| 盖州市| 红河县| 安泽县| 即墨市| 邹城市| 尼勒克县| 视频| 五寨县| 南陵县| 涡阳县| 麟游县| 阿拉善右旗| 阳东县| 富裕县| 钟山县| 沐川县| 潼南县| 江北区| 贵港市| 肥东县|