Refactor Kernel.php to improve server scheduling logic
This commit is contained in:
@@ -14,6 +14,7 @@ use App\Jobs\ScheduledTaskJob;
|
|||||||
use App\Jobs\ServerCheckJob;
|
use App\Jobs\ServerCheckJob;
|
||||||
use App\Jobs\ServerCleanupMux;
|
use App\Jobs\ServerCleanupMux;
|
||||||
use App\Jobs\UpdateCoolifyJob;
|
use App\Jobs\UpdateCoolifyJob;
|
||||||
|
use App\Models\InstanceSettings;
|
||||||
use App\Models\ScheduledDatabaseBackup;
|
use App\Models\ScheduledDatabaseBackup;
|
||||||
use App\Models\ScheduledTask;
|
use App\Models\ScheduledTask;
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
@@ -26,10 +27,13 @@ class Kernel extends ConsoleKernel
|
|||||||
{
|
{
|
||||||
private $allServers;
|
private $allServers;
|
||||||
|
|
||||||
|
private InstanceSettings $settings;
|
||||||
|
|
||||||
protected function schedule(Schedule $schedule): void
|
protected function schedule(Schedule $schedule): void
|
||||||
{
|
{
|
||||||
$this->allServers = Server::query()->whereRelation('settings', 'is_usable', true)->whereRelation('settings', 'is_reachable', true)->where('ip', '!=', '1.2.3.4')->get();
|
$this->allServers = Server::where('ip', '!=', '1.2.3.4')->get();
|
||||||
$settings = instanceSettings();
|
|
||||||
|
$this->settings = instanceSettings();
|
||||||
|
|
||||||
$schedule->job(new CleanupStaleMultiplexedConnections)->hourly();
|
$schedule->job(new CleanupStaleMultiplexedConnections)->hourly();
|
||||||
|
|
||||||
@@ -43,14 +47,12 @@ class Kernel extends ConsoleKernel
|
|||||||
$this->checkScheduledTasks($schedule);
|
$this->checkScheduledTasks($schedule);
|
||||||
$schedule->command('uploads:clear')->everyTwoMinutes();
|
$schedule->command('uploads:clear')->everyTwoMinutes();
|
||||||
|
|
||||||
$schedule->command('telescope:prune')->daily();
|
|
||||||
|
|
||||||
$schedule->job(new CheckHelperImageJob)->everyFiveMinutes()->onOneServer();
|
$schedule->job(new CheckHelperImageJob)->everyFiveMinutes()->onOneServer();
|
||||||
} else {
|
} else {
|
||||||
// Instance Jobs
|
// Instance Jobs
|
||||||
$schedule->command('horizon:snapshot')->everyFiveMinutes();
|
$schedule->command('horizon:snapshot')->everyFiveMinutes();
|
||||||
$schedule->command('cleanup:unreachable-servers')->daily()->onOneServer();
|
$schedule->command('cleanup:unreachable-servers')->daily()->onOneServer();
|
||||||
$schedule->job(new PullTemplatesFromCDN)->cron($settings->update_check_frequency)->timezone($settings->instance_timezone)->onOneServer();
|
$schedule->job(new PullTemplatesFromCDN)->cron($this->settings->update_check_frequency)->timezone($this->settings->instance_timezone)->onOneServer();
|
||||||
$schedule->job(new CleanupInstanceStuffsJob)->everyTwoMinutes()->onOneServer();
|
$schedule->job(new CleanupInstanceStuffsJob)->everyTwoMinutes()->onOneServer();
|
||||||
$this->scheduleUpdates($schedule);
|
$this->scheduleUpdates($schedule);
|
||||||
|
|
||||||
@@ -67,35 +69,33 @@ class Kernel extends ConsoleKernel
|
|||||||
|
|
||||||
private function pullImages($schedule): void
|
private function pullImages($schedule): void
|
||||||
{
|
{
|
||||||
$settings = instanceSettings();
|
$servers = $this->allServers->whereRelation('settings', 'is_usable', true)->whereRelation('settings', 'is_reachable', true);
|
||||||
foreach ($this->allServers as $server) {
|
foreach ($servers as $server) {
|
||||||
if ($server->isSentinelEnabled()) {
|
if ($server->isSentinelEnabled()) {
|
||||||
$schedule->job(function () use ($server) {
|
$schedule->job(function () use ($server) {
|
||||||
CheckAndStartSentinelJob::dispatch($server);
|
CheckAndStartSentinelJob::dispatch($server);
|
||||||
})->cron($settings->update_check_frequency)->timezone($settings->instance_timezone)->onOneServer();
|
})->cron($this->settings->update_check_frequency)->timezone($this->settings->instance_timezone)->onOneServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$schedule->job(new CheckHelperImageJob)
|
$schedule->job(new CheckHelperImageJob)
|
||||||
->cron($settings->update_check_frequency)
|
->cron($this->settings->update_check_frequency)
|
||||||
->timezone($settings->instance_timezone)
|
->timezone($this->settings->instance_timezone)
|
||||||
->onOneServer();
|
->onOneServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function scheduleUpdates($schedule): void
|
private function scheduleUpdates($schedule): void
|
||||||
{
|
{
|
||||||
$settings = instanceSettings();
|
$updateCheckFrequency = $this->settings->update_check_frequency;
|
||||||
|
|
||||||
$updateCheckFrequency = $settings->update_check_frequency;
|
|
||||||
$schedule->job(new CheckForUpdatesJob)
|
$schedule->job(new CheckForUpdatesJob)
|
||||||
->cron($updateCheckFrequency)
|
->cron($updateCheckFrequency)
|
||||||
->timezone($settings->instance_timezone)
|
->timezone($this->settings->instance_timezone)
|
||||||
->onOneServer();
|
->onOneServer();
|
||||||
|
|
||||||
if ($settings->is_auto_update_enabled) {
|
if ($this->settings->is_auto_update_enabled) {
|
||||||
$autoUpdateFrequency = $settings->auto_update_frequency;
|
$autoUpdateFrequency = $this->settings->auto_update_frequency;
|
||||||
$schedule->job(new UpdateCoolifyJob)
|
$schedule->job(new UpdateCoolifyJob)
|
||||||
->cron($autoUpdateFrequency)
|
->cron($autoUpdateFrequency)
|
||||||
->timezone($settings->instance_timezone)
|
->timezone($this->settings->instance_timezone)
|
||||||
->onOneServer();
|
->onOneServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user