Example #1
0
 /**
  * @param Request $request
  */
 private function throttleRequests(Request $request)
 {
     if (!$this->computedRps) {
         $this->computedRps = $this->getThrottleRequestsAt() / self::THROTTLE_REQUEST_INTERVAL_SECONDS;
         $request->log("Throttle request interval {$this->computedRps}");
     }
     if (!$this->lastThrottleUpdateTime) {
         $this->lastThrottleUpdateTime = time();
     }
     $this->updateRequestVolume();
     $request->log("Request Volume {$this->requestVolume}");
     if ($this->shouldThrottle()) {
         $request->log("Throttling");
         do {
             usleep(100000);
             $this->updateRequestVolume();
         } while ($this->shouldThrottle());
     }
 }