从SQL数据库自动更新统计信息

时间:2012-07-04 21:56:07

标签: php javascript jquery html ajax

我正在尝试像http://www.minecraft.net页面那样自动更新数据库销售的效果,我已经研究了两个月了,没有运气。 我有一个php文件,可以查找数据库中有多少结果并将它们显示为数字,工作正常http://tzeale.com/sandbox/stats/pull.php

我正在尝试的是获得类似于minecraft.net的效果,它会在不刷新页面的情况下自动更新。任何人都可以指导我做什么?我不知道还有什么可以尝试的。

感谢。

2 个答案:

答案 0 :(得分:2)

你需要使用AJAX。

setTimeout,以及对该pull.php的AJAX调用

如果你正在使用jQuery,这里有一个很好的例子来说明如何实现你想要的。 添加了一个简单的逻辑来查看服务器是否已经死亡,并最终停止。

var failed = 0; 
var limit_failed = 5;
(function updateSales( waitTime ){
   waitTime = waitTime || 1000; // Set to 1 second by default

   setTimeout(function(){
       $.ajax({
           url: 'pull.php',
           success: function( response ){
               // Update something with your response
                alert ("sales are now at: "+ response);
               updateSales(); // Recursion
           },
           error: function(){           
                // Error handling - not necessary
               // If the request failed more then (limit_failed) times, you might want to stop it from checking after (limit_failed) times, 
               // and in the meanwhile icnrease the wait time, so the server has more time to get back online.
               if( ++failed < limit_failed ){
                   waitTime += 1000;
                   updateSales( waitTime );
               }
           }
       });
   }, waitTime);
})();

答案 1 :(得分:1)

您将使用setTimeout和Ajax。 setTimeout将使用Ajax每1000毫秒(或者你设置它)获取数据来获取数据。

您可以将显示计数包装在html中,例如:

<span id="mycount"></span>

然后你的jQuery代码看起来像这样:

 setTimeout(function(){
   $.get("/sandbox/stats/pull.php",function(data){
      $("#mycount").html(data);
   });
 },1000);

1000是一秒钟,如果您愿意,可以更改它。我不知道如何使它像这样制作动画,但是一旦你检索数据它就会进入你的$.get()函数。此外,由于same origin policy

,因此Ajax必须位于与http://tzeale.com/相同的域中

HOWEVER ,在浏览了te minecraft.net网站后,我注意到他们将这些数据一次性加载到他们的页面中,而不是每1秒获取一次:

<script>
var justLoggedIn = false;
var totalUsers = 33652552;
var paidUsers = 6495707;
var totalUsersRate = 1.2166667;
var paidUsersRate = 0.15;
</script>

然后他们没有获得实时数据。他们只是获得当前金额,然后继续加1。

他们使用此插件制作动画:http://timeago.yarp.com/ 并且仍然使用setTimeout()每秒向其添加1。我不认为这是真正的用户,只是从var totalUsers

开始的计数器