PHP在后台获取数据

PHP在后台获取数据,php,cakephp,fetch,cakephp-2.1,Php,Cakephp,Fetch,Cakephp 2.1,我们正在构建一个分析应用程序。这将需要用户等待30秒,同时我们从另一个来源获取数据,并在向用户显示数据之前进行一些计算 当我们在后台获取数据时,是否有任何方法可以向用户显示等待的页面,而不是在获取数据时让页面加载30秒 有人能解释一下这是如何实现的吗?一种方法是使用AJAX在服务器上使用HTTP GET请求轮询页面 您可以使用数据库,甚至更好 编辑: 因为我们这里不是在讨论文件上传,所以会话可能是比APC_upload_PROGRESS更好的选择。会话提供每个用户的存储,这在这里应该是理想的,并

我们正在构建一个分析应用程序。这将需要用户等待30秒,同时我们从另一个来源获取数据,并在向用户显示数据之前进行一些计算

当我们在后台获取数据时,是否有任何方法可以向用户显示等待的页面,而不是在获取数据时让页面加载30秒


有人能解释一下这是如何实现的吗?

一种方法是使用AJAX在服务器上使用HTTP GET请求轮询页面

您可以使用数据库,甚至更好

编辑:


因为我们这里不是在讨论文件上传,所以会话可能是比APC_upload_PROGRESS更好的选择。会话提供每个用户的存储,这在这里应该是理想的,并且可以由不同的存储(如APC)支持。

注意:对于lightbox,您必须包括lightbox 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>

函数onload_wating()
{
var syncronize_target=SITE_URL+'your_controllername/action_timer/';
$.lightbox(同步化\u目标{
宽度:450,
身高:260,
“模态”:正确,
“onOpen”:函数(){
$(“.jquery lightbox button close”).css({“可见性”:“隐藏”,“显示”:“无”});
}
});
}
超负荷运转();
action_timer.ctp

注意:对于倒计时,您必须包括jquery倒计时->


$(函数(){
$(“#同步#头#计时器”)。倒计时(
{
直到:+50,
格式:“MS”,
一个解释:ltliftOff
}); 
});
函数ltliftOff(){
$.lightbox().close();
}
==========================================

上图onload_wating()此函数用于打开lightbox并对控制器操作进行ajax查询,并打开action_timer.ctp

在action_timer.ctp中,我们使用倒计时。 此计时器计数为50,然后自动关闭


在这50秒之间,您可以从数据库中检索数据。

是的,我正在获取的数据在显示之前将存储在数据库中。如果存在大量流量,数据库可能不是放置轮询机制后端的最佳位置。APC是驻留在Web服务器上的内存,因此性能应该更好,但对于较小的负载,我认为DB应该可以。事实上,现在我想到了,如果不是您正在监视的上载,会话可能会更好。同样的想法,负载在Web服务器上,而不是数据库上,当然是高度可移植的。。我将做大约8个api调用来获取各种数据,然后我需要存储在数据库中,以备将来使用。
     <script>
     $(function () {    
        $('#syncronize_header_timer').countdown(
                {
                until:+50,
                format: 'MS',
                onExpiry: ltliftOff
                }); 
    });

        function ltliftOff() {

            $.lightbox().close();
        }

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