国产探花免费观看_亚洲丰满少妇自慰呻吟_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頁面有執行時間限制,而且長時間執行一個頁面會對服務器造成一定的壓力.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 思南县| 澄迈县| 鄂托克旗| 黔江区| 吉隆县| 布尔津县| 漠河县| 邻水| 敦化市| 永宁县| 宁武县| 通化市| 个旧市| 会东县| 岗巴县| 晋中市| 新津县| 温州市| 门源| 邛崃市| 敦化市| 云阳县| 卢龙县| 莲花县| 安多县| 大同市| 寻乌县| 辉县市| 娄底市| 武穴市| 孝感市| 长海县| 乌海市| 宜章县| 新乐市| 安仁县| 子长县| 彩票| 齐齐哈尔市| 寿阳县| 静宁县|