Server : Apache System : Linux host44.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64 User : vapecompany ( 2719) PHP Version : 7.4.33 Disable Function : NONE Directory : /home/vapecompany/demo.vapecompany.com.bd/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; use Throwable; class ThrottlesExceptionsWithRedis extends ThrottlesExceptions { use InteractsWithTime; /** * The Redis factory implementation. * * @var \Illuminate\Contracts\Redis\Factory */ protected $redis; /** * The rate limiter instance. * * @var \Illuminate\Redis\Limiters\DurationLimiter */ protected $limiter; /** * Process the job. * * @param mixed $job * @param callable $next * @return mixed */ public function handle($job, $next) { $this->redis = Container::getInstance()->make(Redis::class); $this->limiter = new DurationLimiter( $this->redis, $this->getKey($job), $this->maxAttempts, $this->decayMinutes * 60 ); if ($this->limiter->tooManyAttempts()) { return $job->release($this->limiter->decaysAt - $this->currentTime()); } try { $next($job); $this->limiter->clear(); } catch (Throwable $throwable) { if ($this->whenCallback && ! call_user_func($this->whenCallback, $throwable)) { throw $throwable; } $this->limiter->acquire(); return $job->release($this->retryAfterMinutes * 60); } } }