繁体   English   中英

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

[英]Auto Update Stats From SQL Database

我正在尝试获得一种效果,例如http://www.minecraft.net页面,它会自动从数据库中更新销售,我已经研究了两个月了,没有运气。 我有一个php文件,该文件可查找数据库中有多少个结果并将其显示为数字,效果很好http://tzeale.com/sandbox/stats/pull.php

我想做的是获得像minecraft.net这样的效果,它会在不刷新页面的情况下自动更新。 谁能指导我该怎么做? 我不知道还能尝试什么。

谢谢。

h您需要使用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);
})();

您将使用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()函数。 此外,由于相同的来源政策,该地址必须与http://tzeale.com/处于同一域中,Ajax才能正常工作


但是 ,在查看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开始的计数器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM