diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index bd0b3f9..1de5ac1 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -15,6 +15,7 @@ use Spatie\Health\Checks\Checks\DatabaseCheck; use Spatie\Health\Checks\Checks\DebugModeCheck; use Spatie\Health\Checks\Checks\EnvironmentCheck; +use Spatie\Health\Checks\Checks\ScheduleCheck; use Spatie\Health\Facades\Health; use Spatie\SecurityAdvisoriesHealthCheck\SecurityAdvisoriesCheck; @@ -40,6 +41,7 @@ private function configureHealthChecks(): void EnvironmentCheck::new()->if($this->app->isProduction()), SecurityAdvisoriesCheck::new()->lastDayOfMonth(), NightwatchIssuesCheck::new()->if(filled(config('default.nightwatch.api_token')) && filled(config('default.nightwatch.application_id'))), + ScheduleCheck::new()->heartbeatMaxAgeInMinutes(120), ]); } diff --git a/bootstrap/app.php b/bootstrap/app.php index 9e3a00d..e2e475f 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -26,6 +26,7 @@ use Illuminate\Routing\Middleware\ThrottleRequests; use Illuminate\Validation\ValidationException; use Spatie\Health\Commands\RunHealthChecksCommand; +use Spatie\Health\Commands\ScheduleCheckHeartbeatCommand; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -36,7 +37,9 @@ apiPrefix: '', ) ->withSchedule(function (Schedule $schedule): void { - $schedule->command(RunHealthChecksCommand::class)->everyFiveMinutes(); + // Hourly, to match Laravel Cloud's 60-minute wake-up: Cloud wakes the app for every due task, so anything more frequent keeps it from hibernating. + $schedule->command(RunHealthChecksCommand::class)->hourly(); + $schedule->command(ScheduleCheckHeartbeatCommand::class)->hourly(); }) ->withMiddleware(function (Middleware $middleware): void { // CORS is applied per project by ApplyProjectCors, the post size check