php - session 变量中的值随机更改,但不是所有实例

标签 php ajax laravel session centos

我的环境使用 Laravel 框架,将单个 MSSQL 数据库用作 session 和应用程序数据库驱动程序。应用程序使用单个数据库驱动程序(连接)。

Web 服务器和数据库服务器位于不同的虚拟机上。两台服务器都在 CentOS(Linux 变体)操作系统上运行。

主网页有一个列表或 ID。单击 ID 会打开第二个详细信息网页,该网页向 REST API 发出 AJAX 请求。 REST API 调用托管在不同网络上的外部 Web 服务。 AJAX 调用有时完成得更快并向调用者函数提供响应,但在少数情况下需要更多时间才能完成。

网页和 REST API 是同一个应用程序的一部分,并托管在同一个服务器实例中。应用程序不是负载平衡的。

当用户访问主网页并单击 ID 为 1 的记录时,ID session 变量首先以编程方式赋值为 1,然后进行 AJAX 调用。当用户返回主网页并单击 ID 为 2 的记录时,ID session 变量以编程方式重新分配值 2。当我们检索 ID session 变量的值时,我们得到 2,正如预期的那样。

然而,只有在 AJAX 调用需要更多时间才能完成的情况下,即使我们以编程方式将值 2 重新分配给 ID session 变量,在检索它时,我们有时会得到一个值 2(预期值),而在其他情况下有时我们会得到 1 的值(出​​乎意料的,以前的值)。

我们不确定 session 变量的重新分配是否因任何原因未提交或回滚。

我们也不确定它是否与任何特定版本的 PHP、Laravel、MS SQL Server 等有关,我们不这么认为。

谁能指出为什么 session 重新分配后的值不是新值,而是旧值?

最佳答案

我认为您的“ promise ”想法是正确的路线。尝试从你的 sql 开启自动提交:

SET IMPLICIT_TRANSACTIONS OFF

如果它以这种方式工作,请再次关闭自动提交并确保您的代码执行所有正确的提交。

在这个流行的 SO 问题中对此进行了详细讨论:
How do you set autocommit in an SQL Server session?

关于php - session 变量中的值随机更改,但不是所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54751858/

相关文章:

php - 如何在CodeIgniter中执行mysql_data_seek?

php - 我如何使用 CloudFlare 地理定位检测所有欧洲国家

jquery - 从 Zend Framework Controller 获取 Ajax 响应

ajax - 使用 Ajax 验证 Grails 命令对象

Laravel5 : Middleware or Validation?

PHP 立即设置格式 YYYY-MM-DD

php - 在 PHP 中按日期对 MySQL 结果进行分组

php - jquery appendTo 函数在 ajax success 函数中不起作用

php - Laravel:将参数传递给关系函数?

javascript - Laravel 5.3 + Vue Reddit 类投票系统