延迟睡眠时出现问题

我有与另一个系统中的某些帐户相关的用户。 我需要与单个帐户相关的用户在浏览器中工作/打开窗口时在系统查询之间有延迟。 我正在使用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

我对单个用户的计算正确,但是第二个用户看不到最后的延迟计算。这到底是怎么回事?

评论