����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 Carbon\CarbonImmutable; use Illuminate\Contracts\Redis\Factory as RedisFactory; use Illuminate\Support\Arr; use Laravel\Horizon\Contracts\SupervisorRepository; use Laravel\Horizon\Supervisor; class RedisSupervisorRepository implements SupervisorRepository { /** * The Redis connection instance. * * @var \Illuminate\Contracts\Redis\Factory */ public $redis; /** * Create a new repository instance. * * @param \Illuminate\Contracts\Redis\Factory $redis * @return void */ public function __construct(RedisFactory $redis) { $this->redis = $redis; } /** * Get the names of all the supervisors currently running. * * @return array */ public function names() { return $this->connection()->zrevrangebyscore('supervisors', '+inf', CarbonImmutable::now()->subSeconds(29)->getTimestamp() ); } /** * Get information on all of the supervisors. * * @return array */ public function all() { return $this->get($this->names()); } /** * Get information on a supervisor by name. * * @param string $name * @return \stdClass|null */ public function find($name) { return Arr::get($this->get([$name]), 0); } /** * Get information on the given supervisors. * * @param array $names * @return array */ public function get(array $names) { $records = $this->connection()->pipeline(function ($pipe) use ($names) { foreach ($names as $name) { $pipe->hmget('supervisor:'.$name, ['name', 'master', 'pid', 'status', 'processes', 'options']); } }); return collect($records)->filter()->map(function ($record) { $record = array_values($record); return ! $record[0] ? null : (object) [ 'name' => $record[0], 'master' => $record[1], 'pid' => $record[2], 'status' => $record[3], 'processes' => json_decode($record[4], true), 'options' => json_decode($record[5], true), ]; })->filter()->all(); } /** * Get the longest active timeout setting for a supervisor. * * @return int */ public function longestActiveTimeout() { return collect($this->all())->max(function ($supervisor) { return $supervisor->options['timeout']; }) ?: 0; } /** * Update the information about the given supervisor process. * * @param \Laravel\Horizon\Supervisor $supervisor * @return void */ public function update(Supervisor $supervisor) { $processes = $supervisor->processPools->mapWithKeys(function ($pool) use ($supervisor) { return [$supervisor->options->connection.':'.$pool->queue() => count($pool->processes())]; })->toJson(); $this->connection()->pipeline(function ($pipe) use ($supervisor, $processes) { $pipe->hmset( 'supervisor:'.$supervisor->name, [ 'name' => $supervisor->name, 'master' => implode(':', explode(':', $supervisor->name, -1)), 'pid' => $supervisor->pid(), 'status' => $supervisor->working ? 'running' : 'paused', 'processes' => $processes, 'options' => $supervisor->options->toJson(), ] ); $pipe->zadd('supervisors', CarbonImmutable::now()->getTimestamp(), $supervisor->name ); $pipe->expire('supervisor:'.$supervisor->name, 30); }); } /** * Remove the supervisor information from storage. * * @param array|string $names * @return void */ public function forget($names) { $names = (array) $names; if (empty($names)) { return; } $this->connection()->del(...collect($names)->map(function ($name) { return 'supervisor:'.$name; })->all()); $this->connection()->zrem('supervisors', ...$names); } /** * Remove expired supervisors from storage. * * @return void */ public function flushExpired() { $this->connection()->zremrangebyscore('supervisors', '-inf', CarbonImmutable::now()->subSeconds(14)->getTimestamp() ); } /** * Get the Redis connection instance. * * @return \Illuminate\Redis\Connections\Connection */ protected function connection() { return $this->redis->connection('horizon'); } }