亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

PHP實現即時將結果輸出到瀏覽器

添加時間:2014-7-3 3:08:15  添加: 思海網絡 

web開發中有沒有碰到需要適時的將結果輸出到瀏覽器頁面而不刷新整個頁面的需求呢?當你在處理一個過程需要耗時很長,但你又需要適時的知道程序當前的處理狀況的時候,該怎么辦呢?下面就分享一下如何使用php及時的輸出當前結果到瀏覽器而不刷新整個頁面的效果吧。

下面以一個簡單的例子來說明這個問題。首先來看一段代碼:

<?php
for($i=0;$i<10;$i++){
    echo $i;
    sleep(1);
}
?>

上面這段程序如果在PHP解釋器中執行,每秒會輸出一個數,和預計效果一樣。但在瀏覽器中訪問時,結果卻是瀏覽器在十秒之后一次性地顯示了所有結果。對于這個問題,我們可以使用 ob_flush() 和 flush() 來強制刷新瀏覽器緩存,程序改為:

<?php
//author www.Alixixi.com
for($i=0;$i<10;$i++){
    echo $i;
    ob_flush();
    flush();
    sleep(1);
}
?>

問題解決,但又出來個問題,瀏覽器還不兼容了。實際測試中只有 Firefox 按預計效果即時輸出了結果,而在 IE  Safari Opera 等瀏覽器中還是一次性的輸出結果。查閱相關資料發現是因為不同的瀏覽器對緩沖的處理方式不同,Firefox 在被要求強制刷新緩存時很聽話,而IE需要在接收到256個字節后才會將內容即時展現在界面上,Safari 需要1024個字節,Opera 更有個性,只有在遇到HTML標簽的時候才會即時輸出(Safari也是如此)。

對于以上問題,針對IE和Safari,可以在輸出結果之前先輸出大于限定數目的空白字符:

<?php
echo str_repeat(" ",1024);
for($i=0;$i<10;$i++){
    echo $i;
    ob_flush();
    flush();
    sleep(1);
}
?>

而對于Opera、Safari遇到HTML標簽后才會即時輸出的問題,由于一般我們不會只往瀏覽器中輸出純文本內容,故可以不作考慮。對于上面的程序,可以在輸出結果中加入HTML標簽來達到目的:

<?php
echo str_repeat(" ",1024);
for($i=0;$i<10;$i++){
    echo $i."<br>";
    ob_flush();
    flush();
    sleep(1);
}
?>

至此已基本實現了在各個瀏覽器中達到一致的效果了,至于實際工作中,你可能是另外一種目的但是需要類似這種效果,則只需要根據需要做相應的修改即可。

關鍵字:PHP、瀏覽器、程序

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站