Тази логика не може да се направи само с една: $schedule->command('sendNotifications')
команда и някои параметри.
Първа стъпка, ако още не е направена, настройте вашия сървър и добавете задание на Cron, което извиква командата Laravel artisan:
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
Вариант I
Втора стъпка променете командата си за график на:
$schedule->command('sendNotifications')->everyFifteenMinutes();
or
$schedule->command('sendNotifications')->everyThirtyMinutes();
or
$schedule->command('sendNotifications')->hourly();
в зависимост колко точно искате да го имате, защото някои часови зони имат 30 или 45 минути отместване, вижте https://www.timeanddate.com/time/time-zones-interesting.html
Сега, ако вашата команда sendNotifications
се изпълни, трябва да изградите вашата логика там:
- Проверете дали е четвъртък някъде по света, ако не, отменете
- Вземете часови зони/окръзи, където е 20:00 в момента, с толеранс, ако е необходимо
- Вземете всички потребители в една от тези часови зони/окръзи и им изпратете известието
Вариант II
Разбира се, можете да напишете 40+ различни команди, по една за всяка часова зона,
и да използвате планировчика по този начин:
$schedule->command('sendNotifications_1')
->timezone('America/Chicago')
->thursdays()
->dailyAt('20:00');
$schedule->command('sendNotifications_2')
->timezone('Europe/London')
->thursdays()
->dailyAt('20:00');
$schedule->command('sendNotifications_3')
->timezone('Asia/Tokyo')
->thursdays()
->dailyAt('20:00');
person
Webdesigner
schedule
16.10.2017