Scheduled jobs
Generated from $schedule-> calls in api/app and api/packages
The scheduler runs from api/scheduler.sh, which calls schedule:run for every tenant domain, so each entry below runs once per tenant. Conditions in the code (for example demo mode only on demo tenants) are not shown; follow the file link to see them.
| Package | Kind | Target | Frequency | File |
|---|---|---|---|---|
| app | job | new ReminderAboutWebinarJob(WebinarTermReminderStatusEnum::REMINDED_HOUR_BEFORE) |
everyFiveMinutes() |
api/app/Console/Kernel.php |
| app | job | new ReminderAboutWebinarJob(WebinarTermReminderStatusEnum::REMINDED_DAY_BEFORE) |
everySixHours() |
api/app/Console/Kernel.php |
| app | job | new ReminderAboutConsultationJob(ConsultationTermReminderStatusEnum::REMINDED_HOUR_BEFORE) |
everyMinute() |
api/app/Console/Kernel.php |
| app | job | new ReminderAboutConsultationJob(ConsultationTermReminderStatusEnum::REMINDED_DAY_BEFORE) |
hourly() |
api/app/Console/Kernel.php |
| auth | command | 'ulams:auth:prune-agent-audit' |
daily() |
src/UlamsAuthServiceProvider.php |
| auth | command | 'ulams:auth:prune-device-authorizations' |
hourly() |
src/UlamsAuthServiceProvider.php |
| cart | command | AbandonedCart::class |
dailyAt('1:00') |
src/Providers/ScheduleServiceProvider.php |
| cart | job | RenewRecursiveProduct::class |
hourly() |
src/Providers/ScheduleServiceProvider.php |
| cart | job | ExpireRecursiveProduct::class |
daily() |
src/Providers/ScheduleServiceProvider.php |
| core | command | 'csp-reports:prune' |
dailyAt('03:20') |
src/UlamsServiceProvider.php |
| courses | job | CheckForDeadlines::class |
hourly() |
src/ScheduleServiceProvider.php |
| courses | job | ActivateCourseJob::class |
daily() |
src/ScheduleServiceProvider.php |
| demo | command | ) renders ''--force' => true' as '--force=1', // which Symfony rejects for an option without a value (the reset then never ran) $parameters = ['--force']; $domain = method_exists($this->app, 'domain') ? $this->app->domain() : null; if (is_string($domain) && $domain !== '') { $parameters['--domain'] = $domain; } $schedule->command(ResetDemoCommand::class, $parameters |
cron((string) config(self::CONFIG_KEY . '.reset.cron', '0 * * * *'))->withoutOverlapping(120)->runInBackground() |
src/UlamsDemoServiceProvider.php |
| living-course | command | 'living-course:poll' |
everyFifteenMinutes()->withoutOverlapping()) |
src/UlamsLivingCourseServiceProvider.php |
| lti | command | 'ulams:lti:rotate-keys' |
monthlyOn(1, '03:00') |
src/UlamsLtiServiceProvider.php |
| reports | call | fn () => $this->calculateAndStore() |
cron($this->cronExpression()) |
src/Metrics/AbstractMetric.php |
| tasks | job | new OverdueTaskJob(0, config('ulams_tasks.notifications.overdue_period')) |
daily() |
src/Providers/ScheduleServiceProvider.php |
| video | job | DetectStuckVideo::class |
everyThirtyMinutes() |
src/Providers/ScheduleServiceProvider.php |