PHP脚本添加一个每小时


PHP Script to Add One Every Hour

我是PHP的新手,我希望制作一个脚本,用户每小时都会得到一个"硬币",他们去页面上。例如,如果用户在同一小时内登录两次,他们只能获得一枚硬币。但如果他们在接下来的一个小时内刷新页面,他们就会得到另一枚硬币。然而,当他们不刷新页面时,他们不会得到硬币,即使许多小时过去了。

我该怎么开始做这件事呢?

轻松…:)如果你正在使用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.

我会这样做:

在每次页面加载(刷新,登录,等等)时,检查用户是否已经收到当前小时的硬币。要做到这一点,您需要知道当前的小时数:

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

这将在11:00时给出一个类似"2013-03-25-11"的值。我把日期也算进去了,因为我们不想因为他们昨天11点05分在网上就不给钱了。

则可以:

  1. 每当你有一个新的$hour值(即:它不记录在您的数据库中)并保存$hour值,或

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

  3. 等查询计算所赚取的硬币总数

第一种方法是有用的,如果他们花硬币的东西(如:你可以从他们的"硬币账户"中加减);如果你只想知道金币的总数,那么第二种方法就很有用。

假设数据库中有一个users表。

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