Home >Backend Development >PHP Tutorial >session存在memcache中,当再次调用session_start()的时候,没有读取到数据。

session存在memcache中,当再次调用session_start()的时候,没有读取到数据。

WBOY
WBOYOriginal
2016-06-06 20:08:261007browse

使用了session_set_save_handler将session存在memcache中
然后想重启会话,发现数据没有读取。
当session存在file中的时候,当再次调用session_start()的时候,可以读取到数据。
但是在在memcache中没有读到(当然从memcache中是可以得到的)

问题1:重用现有会话,能读取到memcache中的session数据吗?
问题2:session_start()重用现有会话的时候,是怎么加载数据的?

回复内容:

使用了session_set_save_handler将session存在memcache中
然后想重启会话,发现数据没有读取。
当session存在file中的时候,当再次调用session_start()的时候,可以读取到数据。
但是在在memcache中没有读到(当然从memcache中是可以得到的)

问题1:重用现有会话,能读取到memcache中的session数据吗?
问题2:session_start()重用现有会话的时候,是怎么加载数据的?

session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。
http://php.net/manual/zh/function.session-start.php

最简单的办法应该是 php.ini 可以直接设置

方法I: 在 php.ini 中全局设置

<code class="php">session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"</code>

方法II: 某个目录下的 .htaccess :

<code class="php">php_value session.save_handler "memcache"
php_value session.save_path  "tcp://127.0.0.1:11211"</code>

方法III: 再或者在某个一个应用中:

<code class="php">ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211");</code>

我估计楼主是代码写的有问题

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn