Почему Laravel 5.8 делает повторные запросы к БД при работе с сессией?

В laravel 5.8 при работе с сессией выполняется два лишних запроса к БД по сравнению с laravel 5.7.

5cecd11c367ca855630618.png

Происходит считывание, обновление payload и повторное считывание. На новой чистой установке в 5.7 делается только один запрос, а в 5.8 - три. Не смог найти решения.

Что это и как с этим бороться? И нужно ли бороться?
  • Вопрос задан
  • 893 просмотра
Решения вопроса 1
@primevendetta Автор вопроса
Ответ найден

В Laravel 5.8 были внесены изменения в посредник Illuminate/Session/Middleware/StartSession.php

Метод handle был почищен и переписан. После успешной конфигурации сессии к уже имеющимся вызовам 3 методов был добавлен вызов четертого - saveSession и дан новый комментарий.

$this->collectGarbage($session);

$this->storeCurrentUrl($request, $session);

$this->addCookieToResponse($response, $session);

// Again, if the session has been configured we will need to close out the session
// so that the attributes may be persisted to some storage medium. We will also
// add the session identifier cookie to the application response headers now.
$this->saveSession($request);


Другими словами теперь при успешной конфигурации сессии метка времени будет сохраняться не только в куку (как раньше), но и в саму базу, после чего будет запрашиваться уже измененная сессия новым запросом.

Вот такой вот апдейт ядра фреймворка на +2 запроса произошел в версии 5.8

Собственно коммит
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Вроде это механизм отслеживания (не)активности сессии по таймауту, читаем сессию - если слишком старая - убиваем, если еще не протухла - обновляем время последнего активного обращения, рефрешим сеесию из базы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы