PHP $_SESSION 正在保存,但无法在没有时间延迟的情况下检索
首先,我试图找到有关 SO 的答案,但找不到任何特定于我遇到的问题的答案。
现在,问题如下:
- 我使用 AJAX 向服务器发送一个 JSON 字符串,所有内容都在同一个域、同一个服务器上,
- 我解码 JSON 字符串,使用逗号作为分隔符将其内爆,获取一个字符串作为返回并保存字符串到 $_SESSION 变量中
- 出于测试目的,我什至在设置 $_SESSION 变量后立即对其执行
print_r
,我可以看到它正在被设置 - 当我尝试在不同的 $_SESSION 变量上使用该变量时页面,它已经不存在了。可以访问 $_SESSION,但只是该变量不存在。
这是最好的部分:
如果我在设置 $_SESSION 变量之前放置 sleep(1)
或执行任何需要很长时间才能执行的操作,它就会起作用
First of all, I tried to find an answer on SO, but couldn't find anything that would be specific to the problem I am having.
Now, the problem is as follows:
- I send a JSON string with AJAX to the server, everything is on the same domain, same server
- I decode the JSON string, implode it using commas as separators, get a string as a return and save that string into a $_SESSION variable
- For testing purposes I even do
print_r
on the $_SESSION variable right after setting it and I can see that it is being set - When I try and use that $_SESSION variable on a different page, it doesn't exist anymore. The $_SESSION can be accessed, but it's just that variable that doesn't exist.
And here's the best part:
It works if I put sleep(1)
before setting the $_SESSION variable or do anything that takes a long time to execute
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来您的问题出在会话写入处理程序的写入函数中。 SQL 语句看起来有点奇怪:
Try:
而不是:
基本上使用带有 REPLACE 的 VALUES 而不是 SET。
It looks as if your problem is in your write function of your session write handler. The SQL statement looks a bit odd:
Try:
instead of:
Basically use VALUES with a REPLACE instead of SET.