Задать переменную Laravel Specific Session Variable через некоторое время - PullRequest
0 голосов
/ 25 марта 2019

Я работаю над страницей статистики на моем сайте, и мне нужно, чтобы переменные общего сеанса оставались обычными (например, 120 минут). Но я также хочу сохранить некоторые из моих переменных, поэтому мне не придется выполнять 8 SQL-запросов.например, при каждой перезагрузке страницы я хочу сохранить количество сообщений пользователя за каждый из прошедших 30 дней, но это часто меняется, поэтому я хочу сохранить его только в течение 10 минут. Как я могу сделать только определенные переменные из сеанса, которые будут удалены после 10минут, но оставьте другой в живых?

Я думал о сохранении последнего времени обновления и каждой проверки перезагрузки, если бы это было 10 минут

Session::put('lastRefresh',  Carbon::now()->timestamp);

В кэше я бы просто сделал это

Cache::put('posts',  $posts, 10);

Но он уникален для каждого пользователя, поэтому я не могу, а иногда это просто большой массив (90 элементов за 90 дней), поэтому я не могу использовать cookie: P

Просто наденьтене знаю, является ли это лучшим или наиболее эффективным способом сделать это

1 Ответ

0 голосов
/ 25 марта 2019

Поскольку он уникален для каждого пользователя, вы можете указать пространство имен кеша key, чтобы идентифицировать пользователя:

Cache::put('user_' . auth()->user()->id . '_posts',  $posts, 10);

or

cache(['user_' . auth()->user()->id . '_posts' => $posts], 10);

Затем вы можете получить, используя:

Cache::get('user_' . auth()->user()->id . '_posts');

or

cache('user_' . auth()->user()->id . '_posts');

Примечание: При использовании laravel 5.8 срок действия кэша теперь составляет секунд , а не минут.

...