ajax如何?進度條的效果?

來源:互聯網
上載者:User
用戶端發起一個ajax請求:
$("#data_container").load(server_url,{start_query_id:some_query_id});
要求伺服器端需不斷返回當前進度資料並返回至用戶端,比如,用戶端不斷顯示:當前查詢的user_id是5,該使用者資訊是blahblahblah......
一開始我覺得很簡單,ob_flush不就解決了嘛:
for($i=0;$i<100;$i++){
echo $i."
";
flush();
ob_flush();
sleep(2);
}
結果,還是過了很久,然後PHP才一次性全部輸出。想問一下這個錯在哪?
這樣不行的話,只能用iframe載入了,iframe內嵌頁面通過ob_flush()解決時時輸出當前查詢的效果,但理論上瀏覽器的載入條會一直處於轉圈圈狀態,不合適。
剩下的只能是用ajax每返回一次資料便重新再提交一次query_id的形式,頁面要不停請求伺服器,請求時間也大幅增加,也加大了伺服器負擔。
用websocket,暫且不討論他的瀏覽器可憐的相容性了,PHP天生就不是幹websocket的料吧。
然後,就不知道咋辦了,有沒有比較簡單而且友好的處理這種問題的方式?

回複內容:

用戶端發起一個ajax請求:
$("#data_container").load(server_url,{start_query_id:some_query_id});
要求伺服器端需不斷返回當前進度資料並返回至用戶端,比如,用戶端不斷顯示:當前查詢的user_id是5,該使用者資訊是blahblahblah......
一開始我覺得很簡單,ob_flush不就解決了嘛:
for($i=0;$i<100;$i++){
echo $i."
";
flush();
ob_flush();
sleep(2);
}
結果,還是過了很久,然後PHP才一次性全部輸出。想問一下這個錯在哪?
這樣不行的話,只能用iframe載入了,iframe內嵌頁面通過ob_flush()解決時時輸出當前查詢的效果,但理論上瀏覽器的載入條會一直處於轉圈圈狀態,不合適。
剩下的只能是用ajax每返回一次資料便重新再提交一次query_id的形式,頁面要不停請求伺服器,請求時間也大幅增加,也加大了伺服器負擔。
用websocket,暫且不討論他的瀏覽器可憐的相容性了,PHP天生就不是幹websocket的料吧。
然後,就不知道咋辦了,有沒有比較簡單而且友好的處理這種問題的方式?

ob_flush()和ajax並不是你想象的那種效果。

iframe內嵌頁面通過ob_flush()可以實現你要的,但是有你說的"轉圈圈"。
前端設定定時器,不斷髮送ajax請求,這是目前通行的做法。

要想最佳化ajax,可以查一下Commet。
另外,建議你思考一下你是否真的想要在一個大批量的耗時的操作裡,一點點的輸出每一個使用者的所有資訊。

假進度條演算法
完成進度條為100%
0 ~ 25% :隨機遞增 3% ~ 6% 每秒
25% ~ 65%:隨機遞增 0.1% ~ 3% 每秒
65% ~ 90%:隨機遞增 0.1% ~ 2% 每秒
90% ~ 99%:固定遞增 0.5% 每秒

直到請求完成直接增長到100%

贊同 假進度條方法,我們以前就是這麼幹得。只要確保處理完畢後就是100%就行,中間速度愛咋咋地。

樓上說的假進度不錯

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.