����JFIF��x�x����'
Server IP : 78.140.185.180 / Your IP : 3.131.93.117 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/public_html/vendor/laravel/horizon/src/Repositories/ |
Upload File : |
<?php namespace Laravel\Horizon\Repositories; use Illuminate\Contracts\Queue\Factory as QueueFactory; use Illuminate\Support\Str; use Laravel\Horizon\Contracts\MasterSupervisorRepository; use Laravel\Horizon\Contracts\SupervisorRepository; use Laravel\Horizon\Contracts\WorkloadRepository; use Laravel\Horizon\WaitTimeCalculator; class RedisWorkloadRepository implements WorkloadRepository { /** * The queue factory implementation. * * @var \Illuminate\Contracts\Queue\Factory */ public $queue; /** * The wait time calculator instance. * * @var \Laravel\Horizon\WaitTimeCalculator */ public $waitTime; /** * The master supervisor repository implementation. * * @var \Laravel\Horizon\Contracts\MasterSupervisorRepository */ private $masters; /** * The supervisor repository implementation. * * @var \Laravel\Horizon\Contracts\SupervisorRepository */ private $supervisors; /** * Create a new repository instance. * * @param \Illuminate\Contracts\Queue\Factory $queue * @param \Laravel\Horizon\WaitTimeCalculator $waitTime * @param \Laravel\Horizon\Contracts\MasterSupervisorRepository $masters * @param \Laravel\Horizon\Contracts\SupervisorRepository $supervisors * @return void */ public function __construct(QueueFactory $queue, WaitTimeCalculator $waitTime, MasterSupervisorRepository $masters, SupervisorRepository $supervisors) { $this->queue = $queue; $this->masters = $masters; $this->waitTime = $waitTime; $this->supervisors = $supervisors; } /** * Get the current workload of each queue. * * @return array */ public function get() { $processes = $this->processes(); return collect($this->waitTime->calculate()) ->map(function ($waitTime, $queue) use ($processes) { [$connection, $queueName] = explode(':', $queue, 2); $totalProcesses = $processes[$queue] ?? 0; $length = ! Str::contains($queue, ',') ? collect([$queueName => $this->queue->connection($connection)->readyNow($queueName)]) : collect(explode(',', $queueName))->mapWithKeys(function ($queueName) use ($connection) { return [$queueName => $this->queue->connection($connection)->readyNow($queueName)]; }); $splitQueues = Str::contains($queue, ',') ? $length->map(function ($length, $queueName) use ($connection, $totalProcesses, &$wait) { return [ 'name' => $queueName, 'length' => $length, 'wait' => $wait += $this->waitTime->calculateTimeToClear($connection, $queueName, $totalProcesses), ]; }) : null; return [ 'name' => $queueName, 'length' => $length->sum(), 'wait' => $waitTime, 'processes' => $totalProcesses, 'split_queues' => $splitQueues, ]; })->values()->toArray(); } /** * Get the number of processes of each queue. * * @return array */ private function processes() { return collect($this->supervisors->all())->pluck('processes')->reduce(function ($final, $queues) { foreach ($queues as $queue => $processes) { $final[$queue] = isset($final[$queue]) ? $final[$queue] + $processes : $processes; } return $final; }, []); } }