php - 关于服务器日期和 laravel cron 作业的问题
问题描述
我刚刚了解了服务器和 larave crons 中的 cron 作业,在我的 laravel 应用程序中,我在 .env 文件中设置了时区,如下所示:
APP_TIMEZONE='Europe/Madrid'
现在在我的 ubuntu VPS 中我运行了命令
date
并注意到它说的UTC比我的当地时间早一小时(英语少一小时),现在我有两个问题:
当我使用 schedule 命令从 laravel 运行 cron 作业时,应用程序会考虑什么时间来运行命令、我的 VPS 时间(UTC,少一小时)或我的 laravel 应用程序时间(欧洲/马德里)?
我想修复我的 VPS 时间,使其与我的本地时间相同(将其更改为 UTC+1 将修复它),我该如何更改日期/时区?这样做是个好主意吗?
解决方案
Laravel Scheduler 将使用 env 文件中指定的时区,我认为您应该将时区配置保留在应用程序中,这样您就不必在新服务器中费心了。
来自 Laravel 源 Illuminate/Foundation/Console/Kernel.php
/**
* Get the timezone that should be used by default for scheduled events.
*
* @return \DateTimeZone|string|null
*/
protected function scheduleTimezone()
{
$config = $this->app['config'];
return $config->get('app.schedule_timezone', $config->get('app.timezone'));
}
它优先考虑 app.schedule_timezone 并回退到默认的 app.timezone。
或者,您可以覆盖此功能:https ://laravel.com/docs/5.8/scheduling#timezones
推荐阅读
- python - pandas_profiling 主要方法无法正常工作...构造函数有效但方法无效
- ios - 我将 UIGestureReconizer 添加到视图以检测 Touch Down 动作,但是视图上方的按钮将不再起作用
- javascript - 使用 webext-redux 从后台脚本调度操作
- javascript - 价格范围滑块在 mozzila 浏览器中不起作用,但在 chrome 和 opera 浏览器中起作用
- python - Scrapy,通过onclick抓取数据
- c# - 过滤对象集合内的集合不起作用
- scala - Gradle + Scala + Intellij “为每个源集创建单独的模块”
- syntax - 悬空主题(或任何其他)变量不会失败
- reactjs - 将 Reactstrap 的 Input 值设置为空字符串
- node.js - Stripe webhook 错误:未找到与有效负载的预期签名匹配的签名