%PDF- %PDF-
Direktori : /home/graphicd/www/vebto/vendor/laravel/horizon/src/Http/Controllers/ |
Current File : /home/graphicd/www/vebto/vendor/laravel/horizon/src/Http/Controllers/DashboardStatsController.php |
<?php namespace Laravel\Horizon\Http\Controllers; use Laravel\Horizon\Contracts\JobRepository; use Laravel\Horizon\Contracts\MasterSupervisorRepository; use Laravel\Horizon\Contracts\MetricsRepository; use Laravel\Horizon\Contracts\SupervisorRepository; use Laravel\Horizon\WaitTimeCalculator; class DashboardStatsController extends Controller { /** * Get the key performance stats for the dashboard. * * @return array */ public function index() { return [ 'failedJobs' => app(JobRepository::class)->countRecentlyFailed(), 'jobsPerMinute' => app(MetricsRepository::class)->jobsProcessedPerMinute(), 'pausedMasters' => $this->totalPausedMasters(), 'periods' => [ 'failedJobs' => config('horizon.trim.recent_failed', config('horizon.trim.failed')), 'recentJobs' => config('horizon.trim.recent'), ], 'processes' => $this->totalProcessCount(), 'queueWithMaxRuntime' => app(MetricsRepository::class)->queueWithMaximumRuntime(), 'queueWithMaxThroughput' => app(MetricsRepository::class)->queueWithMaximumThroughput(), 'recentJobs' => app(JobRepository::class)->countRecent(), 'status' => $this->currentStatus(), 'wait' => collect(app(WaitTimeCalculator::class)->calculate())->take(1), ]; } /** * Get the total process count across all supervisors. * * @return int */ protected function totalProcessCount() { $supervisors = app(SupervisorRepository::class)->all(); return collect($supervisors)->reduce(function ($carry, $supervisor) { return $carry + collect($supervisor->processes)->sum(); }, 0); } /** * Get the current status of Horizon. * * @return string */ protected function currentStatus() { if (! $masters = app(MasterSupervisorRepository::class)->all()) { return 'inactive'; } return collect($masters)->every(function ($master) { return $master->status === 'paused'; }) ? 'paused' : 'running'; } /** * Get the number of master supervisors that are currently paused. * * @return int */ protected function totalPausedMasters() { if (! $masters = app(MasterSupervisorRepository::class)->all()) { return 0; } return collect($masters)->filter(function ($master) { return $master->status === 'paused'; })->count(); } }