gpt4 book ai didi

并发 session 和 AJAX 的 PHP 问题

转载 作者:可可西里 更新时间:2023-11-01 13:27:15 25 4
gpt4 key购买 nike

我有一个 session 处理程序类,它在脚本末尾调用 session_write_close()。这确保即使发出 header() 或 exit() 也会保存 session 数据。

public function __destruct()
{
session_write_close();
}

但是,我注意到对于我的一个 AJAX 页面,数据库层提交了两个 session 更新。

我的猜测是 [1] 页面加载并发送 [2] AJAX 请求。 [2] AJAX 请求必须在 [1] 页面有机会调用 session_write_close() 之前启动 session 。

在 [2] AJAX 页面加载 session 后,[1] 页面最终保存 session ,然后在 [2] AJAX 请求保存 session 后不久 - 这将覆盖第一个 session !

它可能看起来像这样:

[1] page loads session
[1] page sends output
[2] ajax loads session
[1] page saves session
[2] ajax sends output
[2] ajax saves session

我该怎么做才能确保一个页面不会在另一个页面有机会保存 session 之前加载 session ?

最佳答案

假设是错误的。

...session data is locked to prevent concurrent writes only one script may operate on a session at any time http://us.php.net/session_write_close

换句话说,您可以同时为一个用户运行 100 个 AJAX 请求,并且每个请求都会等待轮到他们。

我的问题原来是在选择正确的 session 表列时出错,导致我的 session 在每次加载时都被重新创建。

关于并发 session 和 AJAX 的 PHP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com