Memcache会话处理程序 - session_start()添加到缓存的项目是什么?

时间:2014-05-02 18:12:58

标签: php memcached

session_start(); =>将一些项目存储到缓存中 - 这个项目是什么

session_write_close(); =>将名称为会话ID的项目和值作为$ _SESSION中的内容存储到缓存中

1 个答案:

答案 0 :(得分:1)

使用memcache的会话处理程序,session_start不会直接将任何内容存储到缓存池中。它只是连接到服务器,并尝试将以前的会话数据读入PHP的sesssion线程。会话数据将存储为serialized字符串,并在线程完成时保存在PHPSESSID生成的密钥下,或者调用session_write_close

您可以通过运行memcached -vvv并与PHP中的缓存进行交互来验证这一点。远程登录。

在PHP的交互模式下,运行以下命令。

php > session_start(); // Connect and read 1r5v47v4eh5uaem4dnt8a74jk2
php > print session_id().PHP_EOL;
1r5v47v4eh5uaem4dnt8a74jk2
php > $_SESSION['a'] = 400;
php > session_write_close(); // Write to 1r5v47v4eh5uaem4dnt8a74jk2

在memcached的详细输出中,您应该看到有关连接线程的信息(省略了内部状态转换。)

// session_start
<28 new auto-negotiating client connection
28: Client using the ascii protocol
<28 get 1r5v47v4eh5uaem4dnt8a74jk2
> NOT FOUND 1r5v47v4eh5uaem4dnt8a74jk2
>28 END
// session_write_close
<28 set 1r5v47v4eh5uaem4dnt8a74jk2 0 1440 8
> NOT FOUND 1r5v47v4eh5uaem4dnt8a74jk2
>28 STORED
<28 connection closed.

然后你可以用telnet验证

telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get 1r5v47v4eh5uaem4dnt8a74jk2
VALUE 1r5v47v4eh5uaem4dnt8a74jk2 0 8
a|i:400;
END

退出