0

私はしばらくの間memcachedをsession.save_handlerとして使用しており、すべてが100%正常に機能しています。

それから私は試します:

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

セッションの1つをフェッチすると、出力が非常に奇妙になります(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_prefixmemc.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 WebSocketをテストしていて、JSを使用してセッションIDを手動で渡す必要があるため、memcachedから直接データをフェッチしています。次に、そのIDのセッション変数を自分で取得する必要があります:D

于 2012-08-25T02:44:03.813 に答える
1

PHPセッションは、独自の関数を使用してエンコード/デコードされます。session_decodeを参照してください。

于 2012-08-24T13:31:24.433 に答える