我有与另一个系统中的某些帐户相关的用户。 我需要与单个帐户相关的用户在浏览器中工作/打开窗口时在系统查询之间有延迟。 我正在使用redis来保持查询之间的超时,我的应用程序是在yii2框架上编写的。
例如: 我有两个与单个帐户相关的用户,延迟应为5秒。因此流程应该是这样的:如果第一个用户同时打开4个窗口,则最后一个窗口应延迟20秒,如果第二个用户同时打开1个窗口,则延迟应25秒。
这是延迟计算代码:
// <!-- Calculating timeout
/** @var Connection $redis */
$redis = Yii::$app->redis;
$redisTimeoutKey = "account:" . $account->id;
$delay = 5;
$timeout = $redis->get($redisTimeoutKey);
$toSleep = $timeout - time();
if ($toSleep > 0) {
$redis->set($redisTimeoutKey, $timeout + $delay);
sleep($toSleep);
} else {
$redis->set($redisTimeoutKey, time() + $delay);
}
// -->
// request to the system here
我对单个用户的计算正确,但是第二个用户看不到最后的延迟计算。这到底是怎么回事?