この記事の内容は、PHP によるマルチサーバー SESSION 共有の実現についてです。これは、特定の参考価値がありますので、必要な友達に共有してください。
現在、少し大きな Web サイトには、基本的に www.feiniu.com、search.feiniu.com、member.feiniu.com などの複数のサブドメインがあります。これらの Web サイトでユーザーのログイン情報を共有する必要がある場合は、もちろん、このセッション共有を行うには、同じメイン ドメインを持っていることが前提となります。
PHP セッションの原則
プロセスは次のようになりますが、異なるサーバーは同じクライアントに対して異なる session_id を生成するため、異なるサーバーは同じセッションコンテンツを取得できません。さらに、PHP のデフォルトの SESSION データは、このサーバーのファイル システムに別途保存されます。
したがって、セッション共有を解決したい場合は、
2 つの問題を解決する必要があります:
1. 複数のサーバーが同じ session_id を使用します1
2
3
3 . ストレージ エンジンの選択方法
デフォルトのファイル ストレージ: このセッション破棄方法は、同時実行性が高い場合や破棄時間が長い場合、大量のもちろん、SESSIONディレクトリにファイルが生成されます。SESSIONファイルは階層ディレクトリに保存されます。これにより、2 つの問題が発生します。1 つは、ファイルの検索が遅いということです。2 つ目は、各ディレクトリに収容できるファイルの数が制限されているため、新しい SESSION の保存に失敗する可能性があります。
「分散」する必要がない、共有する必要がない、または単純にサーバーが 1 つしかないほど小さいアプリケーションの場合、memcached は何のメリットももたらしません。それどころか、システムの速度が低下します。ネットワーク接続にもリソースが必要となるため、効率が向上します。
Redis ストレージ: memcache と比較すると、redis アクセスは若干遅いという利点があります:
redis はより多くのデータ構造をサポートし、配列またはオブジェクトを保存できますが、memcache は文字列のみを保存できます。
セッションマシンが再起動されると、memcacheのすべてのユーザーはセッションを取り戻す必要がありますが、redisはそうではありませんPHPで複数サーバーを実装するセッション共有 NFS共有方法_PHPチュートリアル
以上がPHP はマルチサーバー SESSION 共有を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。