22
33namespace App \Console ;
44
5- use App \Jobs \SearchForSpeedtests ;
5+ use App \Jobs \ExecSpeedtest ;
6+ use App \Settings \GeneralSettings ;
7+ use Cron \CronExpression ;
68use Illuminate \Console \Scheduling \Schedule ;
79use Illuminate \Foundation \Console \Kernel as ConsoleKernel ;
810
@@ -13,11 +15,41 @@ class Kernel extends ConsoleKernel
1315 */
1416 protected function schedule (Schedule $ schedule ): void
1517 {
16- $ schedule -> job ( new SearchForSpeedtests ())-> everyMinute ();
18+ $ settings = new GeneralSettings ();
1719
18- // $schedule->command('inspire')
19- // ->everyMinute()
20- // ->appendOutputTo(storage_path('logs/inspire.log'));
20+ /**
21+ * Check for speedtests that need to run.
22+ */
23+ $ schedule ->call (function () use ($ settings ) {
24+ $ ooklaServerId = null ;
25+
26+ if (! blank ($ settings ->speedtest_server )) {
27+ $ item = array_rand ($ settings ->speedtest_server );
28+
29+ $ ooklaServerId = $ settings ->speedtest_server [$ item ];
30+ }
31+
32+ $ speedtest = [
33+ 'ookla_server_id ' => $ ooklaServerId ,
34+ ];
35+
36+ ExecSpeedtest::dispatch (
37+ speedtest: $ speedtest ,
38+ scheduled: true
39+ );
40+ })
41+ ->everyMinute ()
42+ ->when (function () use ($ settings ) {
43+ // Don't run if the schedule is missing (aka disabled)
44+ if (blank ($ settings ->speedtest_schedule )) {
45+ return false ;
46+ }
47+
48+ // Evaluate if a run is needed based on the schedule
49+ $ cron = new CronExpression ($ settings ->speedtest_schedule );
50+
51+ return $ cron ->isDue ();
52+ });
2153 }
2254
2355 /**
0 commit comments