所以,在我的街机上,howlingdoggames.com.我有一个积分系统,每次你访问一个有游戏的页面时都给你一个点,现在,为了减少对此的滥用,我想做出某种延迟,所以它只在45秒后获奖.这是我尝试过的.
...
if ($_SESSION['lastgame'] != $gameid);{
sleep(45);
$points = $points + $game_points;
$_SESSION['lastgame'] = $gameid;
}
...
Run Code Online (Sandbox Code Playgroud)
不过,这似乎只是阻止我的整个网站45秒,因为这是在index.php文件,与其他代码,以我的网站很多.
无论如何我可以隔离那段代码,所以它只能实现这个功能
$points = $points + $game_points;
Run Code Online (Sandbox Code Playgroud)
等45秒?
PHP中(大多数情况下)没有多线程.您可以使用Unix系统上的分叉进程来执行此操作,但这是无关紧要的,因为多线程并不是您所追求的.你只想要这样简单的逻辑:
$now = time();
session_start();
$last = $_SESSION['lastvisit'];
if (!isset($last) || $now - $last > 45) {
$points = $_SESSION['points'];
if (!isset($points)) {
$points = 0;
}
$_SESSION['points'] = $points + 10;
$_SESSION['lastvisit'] = $now;
}
Run Code Online (Sandbox Code Playgroud)
如果你最后一次给出点数之间的增量大于45秒,基本上只给出分数.