php - laravel потерял сеанс входа в систему, когда другой проект на том же сервере выполняет огромную работу с БД - PullRequest
0 голосов
/ 04 июня 2018

Существует ситуация, когда laravel теряет сеанс входа в систему, когда другой проект на том же сервере выполняет огромную работу с БД.

Два проекта размещены в одном и том же apache / nginx и используют laravel 5.4.Но у них разные имена файлов cookie сеанса.

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

Вот что я получаю при выгрузке сеанса (session () -> all ()).

до того, как другой проект запустит задание "_token" => "1RHWi0cOzmTKtNvQRfpSiuKY8XrMTPyaRVmOrjZ1" "login_admin_59ba36addc2b2f9401580f014c7f58ea4e30989d" => 10 , когда другой проект запустит задание с огромной базой данных "_token" => "a48IdcffgDsqqPM0Z3c3w8HlQcBSEpniMVJb25g5" после отмены (в broswer) запуска задания другого проекта "_token" => "1RHWi0cOzmTKtNvQRfpSiuKY8XrMTPyaRVmOrjZ1" "login_admin_59ba36addc2b2f9401580f014c7f58ea4e30989d" => 10

Диск сеанса является файловым.Я пытался изменить диск сеанса на cookie и базу данных, но ни один из них не работает.

У кого-нибудь есть идеи о том, как это исправить?большое спасибо !!!

1 Ответ

0 голосов
/ 05 июня 2018

Эта проблема вызвана проблемой безопасности потока при использовании getenv().Когда запущен один проект laravel и загружен .env.В то время как проект anthor запускается одновременно, он находит, что env уже установлен, и просто используйте его.

Чтобы исправить это:

  1. Использование другого имени переменной env.Например, в проекте A APP_URL_A = ***, для B, используя APP_URL_B
  2. Запись env в конфигурации vhost
  3. Если используется laravel, кэшируйте конфигурацию (запустив php artisan config:cache)

полезные ссылки:
https://github.com/vlucas/phpdotenv/issues/219

...