mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 17:31:49 +08:00 
			
		
		
		
	update: queue
This commit is contained in:
		| @@ -19,7 +19,12 @@ use App\Models\StatServer; | ||||
| use Illuminate\Support\Facades\Cache; | ||||
| use Illuminate\Support\Facades\DB; | ||||
| use Illuminate\Support\Facades\Http; | ||||
| use Laravel\Horizon\Contracts\JobRepository; | ||||
| 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 | ||||
| { | ||||
| @@ -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 | ||||
| @@ -53,5 +60,56 @@ class SystemController extends Controller | ||||
|             return $master->status === 'paused'; | ||||
|         }) ? 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'); | ||||
|             // System | ||||
|             $router->get ('/system/getSystemStatus', 'Admin\\SystemController@getSystemStatus'); | ||||
|             $router->get ('/system/getQueueStats', '\\Laravel\\Horizon\\Http\\Controllers\\DashboardStatsController@index'); | ||||
|             $router->get ('/system/getQueueWorkload', '\\Laravel\\Horizon\\Http\\Controllers\\WorkloadController@index'); | ||||
|             $router->get ('/system/getQueueStats', 'Admin\\SystemController@getQueueStats'); | ||||
|             $router->get ('/system/getQueueWorkload', 'Admin\\SystemController@getQueueWorkload'); | ||||
|             $router->get ('/system/getQueueMasters', '\\Laravel\\Horizon\\Http\\Controllers\\MasterSupervisorController@index'); | ||||
|             // Theme | ||||
|             $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
											
										
									
								
							
		Reference in New Issue
	
	Block a user