php - php - 当同一服务器上的另一个项目运行巨大的数据库作业时,laravel 丢失了登录会话
问题描述
当同一服务器上的另一个项目运行巨大的数据库作业时,laravel 会丢失登录会话。
两个项目托管在同一个 apache/nginx 中并使用 laravel 5.4。但它们有不同的会话 cookie 名称。
另一个项目正在做的只是从数据库中获取数据,更改一个值并更新它。
这是我在转储会话时得到的(通过会话()->所有())。
在另一个项目运行作业之前
"_token" => "1RHWi0cOzmTKtNvQRfpSiuKY8XrMTPyaRVmOrjZ1"
"login_admin_59ba36addc2b2f9401580f014c7f58ea4e30989d" => 10
当另一个项目运行巨大的数据库作业
"_token" => "a48IdcffgDsqqPM0Z3c3w8HlQcBSEpniMVJb25g5"
后取消(在浏览器中)运行另一个项目的作业
"_token" => "1RHWi0cOzmTKtNvQRfpSiuKY8XrMTPyaRVmOrjZ1"
"login_admin_59ba36addc2b2f9401580f014c7f58ea4e30989d" => 10
会话驱动器是文件。我试图将会话驱动器更改为 cookie 和数据库,但它们都不起作用。
有人对如何解决它有想法吗?非常感谢!!!
解决方案
此问题是由使用getenv()
. 当一个 laravel 项目正在运行并.env
加载时。当 anthor 项目同时运行时,它发现 env 已经设置并使用它。
要解决这个问题:
- 使用不同的环境变量名称。例如在项目 A 中,APP_URL_A = ***,对于 B,使用 APP_URL_B
- 在 vhost 配置中编写 env
- 如果使用 laravel,缓存配置(通过运行
php artisan config:cache
)
推荐阅读
- amazon-web-services - 当我从本地 IdP SAML SSO 登录 AWS 时出现 ExpiredTokenException
- ubuntu - 试图了解如何配置单独的 logrotate 配置
- sql - 如何修剪在每个结果处发生变化的字符串
- c - 控制UC1638图形液晶屏
- c# - 使用 C# 在 Word 中访问拆分的表格单元格
- javascript - 如何使用Javascript将原始图像字节数组转换为PNG图像
- node.js - 将 JSON 消息发送到 Azure 队列存储
- python - 直到在代码的不同部分运行才定义 Python 3 函数?
- java - 如何在 web.xml 上定义为默认 servlet 映射的端点的控制器上获取请求?
- testing - 无法为 x86 项目运行 NUnit 测试