PHP $ _SESSION正在保存,但没有时间延迟就无法检索

时间:2011-10-26 09:11:02

标签: php session

首先,我试图在SO上找到答案,但找不到任何与我遇到的问题有关的答案。

现在,问题如下:

  1. 我将带有AJAX的JSON字符串发送到服务器,所有内容都位于同一个域,同一服务器
  2. 我解码JSON字符串,使用逗号作为分隔符将其内爆,获取字符串作为返回值并将该字符串保存到$ _SESSION变量中
  3. 出于测试目的,我甚至在设置后立即对$ _SESSION变量print_r进行了sleep(1)我可以看到它已被设置
  4. 当我尝试在另一个页面上使用该$ _SESSION变量时,它不再存在。可以访问$ _SESSION,但它只是那个不存在的变量。
  5. 这是最好的部分:

    如果我在设置$ _SESSION变量之前放置{{1}}或执行需要很长时间才能执行的任何事情

1 个答案:

答案 0 :(得分:0)

看起来您的问题出现在会话写入处理程序的写入功能中。 SQL语句看起来有点奇怪:

尝试:

 Core::Database()->query_execute("REPLACE INTO sessions VALUES (" . 
                                 Core::Database()->query_escape($id) . "'," . 
                                 time() . ",'" . 
                                 data = '" . Core::Database()->query_escape($data) . "')");

而不是:

 Core::Database()->query_execute("REPLACE INTO sessions SET 
                                        id = '" . Core::Database()->query_escape($id) . "',
                                        lastaccess = '" . time() . "',
                                        data = '" . Core::Database()->query_escape($data) . "'");

基本上使用VALUES和REPLACE而不是SET。