2012-07-21 55 views
0

我們正在構建一個分析應用程序。這將需要用戶等待30秒,而我們從其他來源獲取數據並進行一些計算,然後再顯示給用戶。PHP在後臺獲取數據

當我們在後臺獲取數據時,有沒有什麼辦法可以向用戶顯示一個等待頁面,而不是在我們獲取數據時將頁面加載30秒。

任何人都可以告訴我們如何做到這一點嗎?

回答

1

注:收藏夾,你必須包括收藏JS

 <script> 
    function onload_wating() 
    { 
    var syncronize_target=SITE_URL+'your_controllername/action_timer/'; 

    $.lightbox(syncronize_target, { 
       width : 450, 
       height : 260, 
       'modal' : true, 
       'onOpen' : function() {  
        $(".jquery-lightbox-button-close").css({"visibility":"hidden","display":"none"}); 
       } 
      }); 
     } 

    onload_wating(); 
    <script> 

action_timer.ctp

注:倒計時,你必須包括jQuery的倒計時 - >http://keith-wood.name/countdown.html

 <script> 
    $(function() {  
     $('#syncronize_header_timer').countdown(
       { 
       until:+50, 
       format: 'MS', 
       onExpiry: ltliftOff 
       }); 
    }); 

     function ltliftOff() { 

      $.lightbox().close(); 
     } 

    <script> 
<div id="syncronize_header_timer" ></div> 

==========================================

上面的onload _wating()這個函數打開燈箱並且向控制器動作進行ajax查詢並打開action_timer.ctp

在action_timer.ctp中,我們使用倒數計時器。這個計時器計數到50,然後它自動關閉。

這50秒之間,你可以從數據庫中檢索你的數據。

1

一種方法是使用AJAX通過HTTP GET請求在服務器上輪詢頁面。

您可以使用數據庫甚至更好APC

編輯:

因爲我們不是在談論一個文件上傳這裏,會話可能比APC_UPLOAD_PROGRESS一個更好的選擇。會話提供的每個用戶存儲在這裏應該是理想的,並且可以由不同的商店如APC支持。

+0

是啊我提取的數據將在顯示前存儲在數據庫本身 – 2012-07-21 04:57:56

+1

如果流量很大,數據庫可能不是放置輪詢機制後端的最佳位置。 APC是駐留在Web服務器上的內存,所以應該對性能更好,但對於較小的負載,我認爲數據庫應該沒問題。 – quickshiftin 2012-07-21 04:59:39

+0

我會檢查出來。這不適用於共享服務器? – 2012-07-21 05:10:03