所以,在我的街机上,howlingdoggames.com。我有一个积分系统,每次您访问正在进行游戏的页面时,都会给您一个积分。为了减少滥用,我想进行某种延迟,因此仅在 45 秒后授予。这是我尝试过的:
if ($_SESSION['lastgame'] != $gameid) {
sleep(45);
$points = $points + $game_points;
$_SESSION['lastgame'] = $gameid;
}
但这似乎让我的整个网站停止了 45 秒,因为这是在index.php
,以及我的网站的许多其他代码。
无论如何我可以隔离那段代码,所以它只做出声明
$points = $points + $game_points;
等45秒?
PHP 中(大部分)没有多线程。您可以通过在 Unix 系统上分叉进程来实现此目的,但这无关紧要,因为多线程并不是您真正想要的。你只想要这样的简单逻辑:
$now = time();
session_start();
$last = $_SESSION['lastvisit'];
if (!isset($last) || $now - $last > 45) {
$points = $_SESSION['points'] ?? 0;
$_SESSION['points'] = $points + 10;
$_SESSION['lastvisit'] = $now;
}
基本上,仅当您上次评分之间的增量大于 45 秒时才给予评分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)