2012-07-21 39 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