mirror of
https://github.com/v2board/v2board.git
synced 2024-11-14 07:29:13 +08:00
update: queue
This commit is contained in:
parent
3fdd6ac30c
commit
1d62f87efc
@ -19,7 +19,12 @@ use App\Models\StatServer;
|
|||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Laravel\Horizon\Contracts\JobRepository;
|
||||||
use Laravel\Horizon\Contracts\MasterSupervisorRepository;
|
use Laravel\Horizon\Contracts\MasterSupervisorRepository;
|
||||||
|
use Laravel\Horizon\Contracts\MetricsRepository;
|
||||||
|
use Laravel\Horizon\Contracts\SupervisorRepository;
|
||||||
|
use Laravel\Horizon\Contracts\WorkloadRepository;
|
||||||
|
use Laravel\Horizon\WaitTimeCalculator;
|
||||||
|
|
||||||
class SystemController extends Controller
|
class SystemController extends Controller
|
||||||
{
|
{
|
||||||
@ -33,9 +38,11 @@ class SystemController extends Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getQueueStatus()
|
public function getQueueWorkload(WorkloadRepository $workload)
|
||||||
{
|
{
|
||||||
|
return response([
|
||||||
|
'data' => collect($workload->get())->sortBy('name')->values()->toArray()
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getScheduleStatus():bool
|
protected function getScheduleStatus():bool
|
||||||
@ -53,5 +60,56 @@ class SystemController extends Controller
|
|||||||
return $master->status === 'paused';
|
return $master->status === 'paused';
|
||||||
}) ? false : true;
|
}) ? false : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getQueueStats()
|
||||||
|
{
|
||||||
|
return response([
|
||||||
|
'data' => [
|
||||||
|
'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->getHorizonStatus(),
|
||||||
|
'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 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,8 +113,8 @@ class AdminRoute
|
|||||||
$router->post('/payment/show', 'Admin\\PaymentController@show');
|
$router->post('/payment/show', 'Admin\\PaymentController@show');
|
||||||
// System
|
// System
|
||||||
$router->get ('/system/getSystemStatus', 'Admin\\SystemController@getSystemStatus');
|
$router->get ('/system/getSystemStatus', 'Admin\\SystemController@getSystemStatus');
|
||||||
$router->get ('/system/getQueueStats', '\\Laravel\\Horizon\\Http\\Controllers\\DashboardStatsController@index');
|
$router->get ('/system/getQueueStats', 'Admin\\SystemController@getQueueStats');
|
||||||
$router->get ('/system/getQueueWorkload', '\\Laravel\\Horizon\\Http\\Controllers\\WorkloadController@index');
|
$router->get ('/system/getQueueWorkload', 'Admin\\SystemController@getQueueWorkload');
|
||||||
$router->get ('/system/getQueueMasters', '\\Laravel\\Horizon\\Http\\Controllers\\MasterSupervisorController@index');
|
$router->get ('/system/getQueueMasters', '\\Laravel\\Horizon\\Http\\Controllers\\MasterSupervisorController@index');
|
||||||
// Theme
|
// Theme
|
||||||
$router->get ('/theme/getThemes', 'Admin\\ThemeController@getThemes');
|
$router->get ('/theme/getThemes', 'Admin\\ThemeController@getThemes');
|
||||||
|
2
public/assets/admin/umi.css
vendored
2
public/assets/admin/umi.css
vendored
File diff suppressed because one or more lines are too long
2
public/assets/admin/umi.js
vendored
2
public/assets/admin/umi.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user