【发布时间】:2016-01-25 18:58:21
【问题描述】:
编辑:
@Bogdan,脚本只执行了一次,正好是第二天开始前一小时,这很奇怪,还因为那天两个约会的start时间不同。然而,这两个约会都定在第二天。
所以基本上我的脚本没有检查下一小时即将到来的约会,而只是检查为明天设置的约会,并在这些约会开始前一小时发送一封电子邮件。令人困惑。另外,如果以Y-m-d H:i 格式检查时间,那么秒数不重要吗?还是我错过了什么?
操作:
我使用 laravel cronjob 和调度程序设置了一些命令。我已经得到了所有我需要工作的命令,除了一个。我有一个约会数据库,我在其中存储约会到期的时间戳。使用命令,我想在约会到期前一小时发送一封电子邮件。为此,我使用以下命令:
$schedule->command('appointment:hourly')->everyMinute();
所以它每分钟运行一次。在我的命令中,我有以下内容:
$date = Carbon::now()->addHours('1')->format('Y-m-d H:i');
$appointments = Appointment::latest('start')->date($date)->get();
因此它将日期设置为now(),然后添加一个小时并在数据库中检查该值。我的电子邮件永远不会被发送(电子邮件脚本有效,因为我对其他命令使用相同的脚本)。
我也尝试了以下方法:
$date = Carbon::now()->addHours('1')->format('Y-m-d H:i:s');
还是什么都没有。我的日期存储在数据库中,例如:
2016-01-25 09:00:00
所以不管它是否也检查以匹配秒,它应该可以工作。例如,当我检查我的$date 时,它确实返回了2016-01-25 09:00。
任何指点将不胜感激。
顺便说一句,我的date() 函数。它只是根据start 列检查值:
public function scopeDate($query, $date)
{
if($date)
{
return $query->whereDate('start', '=', $date);
}
else {
return false;
}
}
PS。我应该提一件事。昨晚正好是晚上 11:00,我收到了来自上述命令的两封电子邮件,说预约将在一个小时后开始。这些是设置为今天开始的约会,但它们并未设置为在 00:00 开始。所以我猜用上面的命令,它不会检查今天的约会。我很困惑,还没有弄清楚这一点。
【问题讨论】:
标签: php date laravel command schedule