session_start();
=>将一些项目存储到缓存中 - 这个项目是什么?
session_write_close()
; =>将名称为会话ID的项目和值作为$ _SESSION中的内容存储到缓存中
答案 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
退出