在laravel 5.7应用程序中安排的任务在错误的时间触发

时间:2019-06-05 06:07:07

标签: laravel-5 cron

在laravel 5.7应用程序中,我遇到一个问题,即在错误的时间接收到带有电子邮件发送的计划任务。 在我的ubuntu 16的crontab中的Digital Ocean Server下,使用命令: crontab -e

我添加了一行:

* * * * * cd /var/www/html/the-box-booking && php artisan schedule:run >> /dev/null 2>&1

浏览器中的php显示下一个:

PHP Version 7.1.17-1+ubuntu16.04.1+deb.sury.org+1
...
date
date/time support   enabled
timelib version 2016.05
"Olson" Timezone Database Version   0.system
Timezone Database   internal
Default timezone    Asia/Dubai
Directive   Local Value Master Value

date.default_latitude        31.7667     31.7667
date.default_longitude       35.2333     35.2333
date.sunrise_zenith          90.583333   90.583333
date.sunset_zenith           90.583333   90.583333
date.timezone                Asia/Dubai  Asia/Dubai

我想控制台命令使用cli配置。 我在命令行中检入:

 php -v
PHP 7.1.17-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: May  5 2018 04:55:21) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.17-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

我打开/etc/php/7.1/cli/php.ini并查看:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Dubai
Timezone = Asia/Dubai

在bootstrap / app.php中,我添加了一行:

date_default_timezone_set('Asia/Dubai');

在app / Console / Kernel.php中,我添加了一行:

protected function schedule(Schedule $schedule)
{
    \Log::info( 'report:available-spaces-by-zones Report run # ' . time()  );
    $schedule->command('report:available-spaces-by-zones')->daily('18:00');
}

结果是,我在日志中看到很多信息行,但是发送报告的时间不同。今天我在21 pm收到了它。

我重新启动了cron,apache和OS。

错误在哪里以及如何解决?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以更改app / config.php的“时区”。

这将为项目设置默认时区。

要发送邮件而不是设置cron,则应设置队列功能。

参考链接:https://laravel.com/docs/5.7/queues