0

我使用 memcached 作为 session.save_handler 已经有一段时间了,一切都 100% 正常。

然后我尝试:

echo $mycache->get('memc.sess.key.o8el2bgk4k9s1mr723j1blrgs3');

获取其中一个会话并且输出很奇怪(一个包含 108 个字符的字符串):

MaiiA6iX7qlS0IZjTdr2I3w4axNTp7H2IYcH-SAficGw5ZKIcMQ0BE2kFnsm4xHMk3KAJo9kOwmRTSBOPdPAC-m5L9CkWnYPONqujt5m0c8.

这个字符串是什么格式的?为了您的信息,这是 phpinfo() 中的 memcached 配置:

  • 指令 本地价值 主价值
  • memcached.compression_factor 1.3 1.3
  • memcached.compression_threshold 2000 2000
  • memcached.compression_type fastlz fastlz
  • memcached.serializer php php
  • memcached.sess_binary 0 0
  • memcached.sess_lock_wait 150000 150000
  • memcached.sess_locking 1 1
  • memcached.sess_prefix memc.sess.key。memc.sess.key。

所以它应该是这种格式:

user_name|s:5:"guest";user_id|s:1:"3";user_level|s:2:"-1";

而不是奇怪的字符串。

注意:我使用的是 memcached + php-memcached。不是 memcache,也不是 php-memcache。谢谢。

4

2 回答 2

2

我找到罪魁祸首了!suhosin.session.encrypt。

ps 我直接从 memcached 获取数据,因为我正在测试 WebSocket 并且必须手动使用 JS 传递会话 ID。然后我需要自己获取该 ID 的会话变量:D

于 2012-08-25T02:44:03.813 回答
1

PHP 会话使用自己的函数进行编码/解码 - 请参阅session_decode

于 2012-08-24T13:31:24.433 回答