在服务器上每秒更新MYSQL值

时间:2014-10-25 17:20:18

标签: javascript php mysql

我正在尝试创建一个脚本来刷新绑定到特定注册用户的数据库中的值。与每个用户不同。

所以例如: 您有一个帐户,此帐户在数据库中有一行名为credit,此信用额应每秒从注册中增加。 (即使该帐户目前已被注销。)

让我们说$ credit = $ credit + 1; (每一秒)。

这是我目前的代码:

<html>
<head>
<script type="text/javascript">
function UpdateDb()
{
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("result").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","main.php",true);
xmlhttp.send();
setTimeout(UpdateDb, 1000);
}
</script>
</head>
<body onload=UpdateDb()>

 <span id="result"><?php $username = $_SESSION['username'];
    $query = "SELECT username, credit FROM users WHERE username = '$username'";
    $updater = "UPDATE users SET credit=credit+1 WHERE username = '$username'";
    $data = mysqli_query($dbc, $query);
    mysqli_query($dbc, $updater);
    if (mysqli_num_rows($data) == 1)
    {
        $row = mysqli_fetch_array($data);
        $credit= $row['credit'];
    }
    echo "<br><br>User: " . $username . "";
    echo "<br>";

    echo "Credit: ". $credit.""; 
?>
    </span>
</body>
</html>

此代码存在的问题是,它只会在帐户登录时刷新该值。

1 个答案:

答案 0 :(得分:0)

如果您只想计算用户实际在您网站上的时间,您可以使用:

<script>
  var startTime = new Date().getTime(); // time in milliseconds

  window.onunload = function()
  {
    var finishTime = new Date().getTime(); // time in milliseconds
    ajaxcall(finishTime-startTime);        // abstract ajax call
  }
</script>

在每个页面上使用此选项。 ajax调用应该使用用户在页面上的时间来更新数据库。

http://reference.sitepoint.com/html/event-attributes/onunload