ホームページ >バックエンド開発 >PHPチュートリアル >memcached - PHP は 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 内のデータは自動的に削除されます。
最初に 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 値が書き込まれるため、解決しました。