我正在使用Laravel 5.4
,我希望thursdays
在8pm
假设我有
我应如何设置CRON JOB,以便他们在当地时间8pm
收到通知?
我的服务器位于纽约市
$schedule->command('sendNotifications')->dailyAt('20:00')->thursdays()
答案 0 :(得分:3)
只需使用一个$schedule->command('sendNotifications')
命令和一些参数即可完成此逻辑。
第一步,如果尚未完成,请设置服务器并添加一个调用Laravel artisan命令的Cron作业:
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
第二步将您的日程安排命令更改为:
$schedule->command('sendNotifications')->everyFifteenMinutes();
或
$schedule->command('sendNotifications')->everyThirtyMinutes();
或
$schedule->command('sendNotifications')->hourly();
取决于您想要的确切程度,因为某些时区的偏移量为30或45分钟,请参阅https://www.timeanddate.com/time/time-zones-interesting.html
现在,如果执行了命令sendNotifications
,则必须在那里构建逻辑:
当然,您可以编写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');
答案 1 :(得分:2)
好吧,我不知道laravel是否有这个功能。
但您可以每小时设置一次cron作业,以检查用户当前时间(带时区)是否为上午8点,以及我们是否尚未向他们发送通知。
对于这些用户,您可以发送通知。