ホームページ  >  記事  >  バックエンド開発  >  memcached - PHP は memcache ストレージ セッションの問題を実装します

memcached - PHP は memcache ストレージ セッションの問題を実装します

WBOY
WBOYオリジナル
2016-08-04 09:20:44838ブラウズ

最初に session.save_handler = user を設定します。memcache ではないことに注意してください。

次に、カスタム クラス Session が SessionHandlerInterface インターフェイスを実装し、オブジェクトを作成し、session_set_save_handler を登録します。これにより、毎回次のようになります:

$_SESSION['aaa'] = '123';

の場合、PHP は Session->write() を呼び出します。この関数では、プレフィックスとして sess-、サフィックスとして session_id() を持つレコードを手動で memcache に挿入します (例: key = sess-4fqrbhed9f3grq4p4ssbljg867)。

この時点で非常に奇妙な問題が発生しています。 $_SESSION['aaa'] = '123'; を実行するたびに、この session_id() に対応するデータを memcache から取得できますが、$_SESSION ['aaa. '] = '123'; その後、memcache 内のデータは自動的に削除されます。

返信内容:

最初に session.save_handler = user を設定します。memcache ではないことに注意してください。

次に、カスタム クラス Session が SessionHandlerInterface インターフェイスを実装し、オブジェクトを作成し、session_set_save_handler を登録します。これにより、毎回次のようになります:

$_SESSION['aaa'] = '123';

の場合、PHP は Session->write() を呼び出します。この関数では、プレフィックスとして sess-、サフィックスとして session_id() を持つレコードを手動で memcache に挿入します (例: key = sess-4fqrbhed9f3grq4p4ssbljg867)。

この時点で非常に奇妙な問題が発生しています。 $_SESSION['aaa'] = '123'; を実行するたびに、この session_id() に対応するデータを memcache から取得できますが、$_SESSION ['aaa. '] = '123'; その後、memcache 内のデータは自動的に削除されます。

php.ini
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211;tcp://127.0.0.1:11212;tcp://127.0.0.1:11213を変更します

SessionHandlerInterface::read() が実装されていないため、リフレッシュ後に $_SESSION が null 値に設定され、write 呼び出し後にこの null 値が書き込まれるため、解決しました。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。