首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算在线时间和计算硬币

计算在线时间和计算硬币
EN

Stack Overflow用户
提问于 2013-01-18 23:19:28
回答 1查看 304关注 0票数 0

我试着在用户登录时设置在线时间和硬币。

用户必须获得1个硬币每个。当他们在线时,我已经计算了在线时间(以秒为单位),但我如何才能对硬币进行正确的计数?

也许它必须每隔35秒更新一次硬币计数?

代码语言:javascript
复制
<?php
session_start();

// Set the session if not set.
if ( !isset ( $_SESSION['startOnlineTime'])):
    $_SESSION['startOnlineTime'] = time();
endif;


$secondsOnline = (time() - $_SESSION['startOnlineTime']);
?>

我尝试过这样的东西(没有运气):‘

代码语言:javascript
复制
<?php
    //if updates every 35 secs, then i calculate it like: 1 (per hour) / 35 (seconds) - 1/35? correct?
    $prHour = (Double) 0.028571428571429; 
    $SQL = "UPDATE users SET coins=coins+0.15 WHERE id = '@session_id()'";
    mysql_query($SQL) or die ( mysql_error() );
?>

但似乎并不正确。我能做什么?

EN

回答 1

Stack Overflow用户

发布于 2013-01-19 00:27:55

这也许是你的问题的一种解决方案。创建一个单独的名为counter.php的php文件,其内容如下。该文件将被周期性地调用,在本例中是每小时调用一次。

counter.php

代码语言:javascript
复制
<?php
if(session_id() == '') {
    sesstion_start();
    if (!isset($_SESSION['userid'])
         return;
         // I use 'userid' to save the user info, you can use others like ip, session_id, ...

    // verify that this file is called hourly
    $t = time();
    if (isset($_SESSION['lastcheck']) && $t - $_SESSION['lastcheck'] < 3550)
         return;
         // if this script is call in the previous 1 hour (3600s), ignore this call.

    $_SESSION['lastcheck'] = time();
    /* update your database here, increment 1 coin in this user record */

}
?>

在要向用户收费的每个页面的中,使用JavaScrip每小时调用一次counter.php。此示例使用jQuery库提供帮助:

代码语言:javascript
复制
 function charge() {
      var waitingTimes = 3600; //1 hours
      $.get("absolute/url/to/counter.php");
      setInterval(charge,waitingTimes)
 }
 $(document).ready(function(){
      charge();          
 });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14401946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档