Caseдата время Carbon отличается
Использование Middleware
, Session
& Carbon
, чтобы проверить, если session/shopping cart
создается longer than 20 minutes ago
поэтому сеанс может быть промыты. (Маршруты сгруппированы внутри промежуточного слоя)
Текущие данные выполняется на Ферме, но одни и те же проблемы возникают на мой живой сайт, который выполняется на сервере Digital Ocean
class CheckCart
{
public function handle($request, Closure $next)
{
// Defining current timestamp
$now = Carbon::now();
// created_at from the session
$created_at = $request->session()->get('created_at');
// If the cart count is == 1, & created_at is null -> put created at date in session
if (Cart::count() == 1 && $created_at == null) {
$request->session()->put('created_at', $now);
}
// If created at date + 20 minutes is earlier than current time, flush (empty) session
if ($created_at != null) {
if ($created_at->addMinutes(20) < $now) {
$request->session()->flush();
}
}
return $next($request);
}
}
задачи
Local time
из моего Macbook является2017-01-06 00:00
Carbon::now()
является2017-01-05 23:25
created_at
временные метки (который был в конечном счете установленCarbon::now()
) является2017-01-06 03:20
Как эти временные метки могут отличаться так много, и особенно, как может created_at
который определяется Carbon::now()
в какой-то момент быть менее 7 часов спустя?
- Все часовые пояса являются
Europe/Amsterdam
Вы используете это в Homestead или какой-либо другой VM? Или просто используя сервер Valet/PHP – jackel414
, как «Carbon :: now()» сравнивается с значением, которое вы получаете при запуске «date» в командной строке Homestead? Ваша временная метка VM отличается от временной метки вашего macbook и, следовательно, может быть не такой – jackel414