PHP脚本每小时添加一个

时间:2014-03-25 16:53:14

标签: php

我是PHP的新手,我希望制作一个脚本,用户每隔一小时就会在页面上获得一个“硬币”。例如,如果用户在同一小时内登录两次,他们将只获得一枚硬币。但如果他们在下一个小时刷新页面,他们会得到另一枚硬币。然而,即使经过很多个小时,他们也不会在不刷新页面时获得硬币。

我怎么会开始这样做呢?任何帮助都将非常感激。

3 个答案:

答案 0 :(得分:1)

简单...... :)如果您使用MySQL或其他东西存储硬币,也可以获得时间,当硬币被记入时。每次调用页面时,请检查时间。伪代码就像这样:

load(coins);
timeDiff = timeNow - timeLastCredited;
if (timeDiff > 1 hour)
  coins++;
save(coins);

对于PHP,我猜你可能会这样:

$coins = getCoins(); // Assuming this function will load the current coins count from DB.
$lastCredit = getLastCoinCreditedTime(); // Should return a DateTime integer.
$timeDiff = microtime() - strtotime($lastCredit);
if ($timeDiff > 60*60*60*1000)
  saveCoins($coins+1); // Assuming this function saves the new number of coins.

答案 1 :(得分:1)

我这样做:

在每个页面加载(刷新,登录等),检查用户是否已收到当前小时的硬币。为此,您需要知道当前时间是什么:

$hour = (new DateTime())->format("Y-m-d-h");

这将在11:00时给出类似“2013-03-25-11”的值。我要包括约会,因为我们不想因为他们昨天上午11点05分在11点钟的时候跳过给硬币,比如11点钟。

然后你可以:

  1. 只要您有一个新的$hour值(即它没有记录在您的数据库中)并添加$hour值,或者

  2. $hour值保存在数据库中,并使用SELECT COUNT(DISTINCT hour) FROM table;

  3. 等查询计算获得的硬币总数

    第一种方法是有用的,如果他们把硬币花在某事上(即你可以加上/减去他们的“硬币账户”);第二个是有用的,如果你只想要一个硬币总数(即所赚取的总数)。

答案 2 :(得分:0)

我假设您在数据库中有一个用户表。

如果是这种情况,您可以使用数据库中的列来更新用户在该页面上使用php和该页面上的查询的最新时间。然后,您可以设置一个每小时运行一次的cron作业,该作业将查询users表并查看用户是否在过去一小时内查看了该页面。如果用户在过去一小时内查看了该页面,请增加与该用户关联的硬币数量。