php - 如何阻止影响我整个 PHP 代码的 PHP sleep()?

标签 php sleep delay

所以,在我的街机上,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 系统上 fork 进程来做到这一点,但这无关紧要,因为多线程并不是您真正想要的。你只想要这样的简单逻辑:

$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 秒时才给分。

关于php - 如何阻止影响我整个 PHP 代码的 PHP sleep()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1617412/

相关文章:

Javascript mootools 延迟隐藏/显示多级菜单

php - 在处理 MySQL 时,我应该在 PHP 脚本中使用 sleep 计时器吗?

php - 如何使用 Eloquent (Laravel) 关系插入记录?

php - 处理来自多个 XHR 实例的多个 PHP 脚本调用

c - 为什么 C nanosleep() 不在这里 sleep ?

ios - 自动减少自身的NSNumber-1

c++ - 使用 boost::this_thread::sleep_for() 和常规 sleep() 函数有什么区别?

jquery - 如何延迟jquery动画?

php - 数据验证优化

javascript - 如何通过iframe将php变量传递给javascript