PHP Session + Memcached =>神秘的数据格式

时间:2012-08-24 13:25:45

标签: php memcached

我一直在使用memcached作为session.save_handler一段时间,一切都正常工作。

然后我尝试:

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。感谢。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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