Mam aplikację Laravel, w której sprawdzam, czy użytkownik logował się regularnie z pulsem na każde 3 sekundy (cel demo, w rzeczywistości 5 minut). Dla każdego rytmu sprawdzam, czy ostatnia aktywność użytkownika z bieżącym czasem to także 5 minut. Jeśli tak, wyloguj się.Laravel wybierz rekordy starsze niż 5 minut?
Oto mój kod:
$result = DB::table('db_user')->where('id_user','=',Session::get('id_user'))->where('last_activity','>=',"now() - interval 5 minute")->get();
if(!empty($result))
return Redirect::to('/logout');
else
return Response::json('still-alive');
Mój problem jest, to nie działa. Jeśli zmienię operand na <=
, wyloguje mnie on bezpośrednio przed 5 minutami, jeśli operandem jest >=
, nawet po 5 minutach nie wyloguje mnie, czy ktoś może wyjaśnić dlaczego?
-EDIT-
Dzięki za wszystkie odpowiedzi, I rozwiązać swoje problemy poprzez modyfikację mojego kodu:
$result = DB::table('db_user')->where('id_user','=',Session::get('id_user'))->first();
if(!empty($result))
if(strtotime($result->last_activity) < strtotime("-5 minutes"))
return Redirect::to('/logout');
else
return Response::json('still-alive');
else
return Response::json('no-record');
dzięki, próbowałem je też, i to działa. Zaakceptowałem i wznowiłem ze względu na twój czas na odpowiedź, w każdym razie już rozwiązałem problem za pomocą mojego własnego kodu (patrz edycja), dziękuję bardzo za poświęcony czas: D – user2002495
możesz również użyć węgla (domyślnie zawartego w Laravel), aby utworzyć sformatowany date: '$ formatted_date = Carbon :: now() -> subMinutes (5) -> toDateTimeString();' – murze