ホームページ  >  記事  >  バックエンド開発  >  PHP はマルチサーバー SESSION 共有を実装します

PHP はマルチサーバー SESSION 共有を実装します

不言
不言オリジナル
2018-04-21 09:29:461836ブラウズ

この記事の内容は、PHP によるマルチサーバー SESSION 共有の実現についてです。これは、特定の参考価値がありますので、必要な友達に共有してください。

PHP はマルチサーバー SESSION 共有を実現します。が必要です


現在、少し大きな Web サイトには、基本的に www.feiniu.com、search.feiniu.com、member.feiniu.com などの複数のサブドメインがあります。これらの Web サイトでユーザーのログイン情報を共有する必要がある場合は、もちろん、このセッション共有を行うには、同じメイン ドメインを持っていることが前提となります。

PHP セッションの原則

クライアントは PHP ページにアクセスし、session_start を実行して session_id を生成します。通常、session_id は Cookie に保存され、クライアントが別のページにアクセスすると、セッションのコンテンツがサーバーに保存されます。 session_id はサービス端末に渡され、session_id を通じてセッションのコンテンツを取得します。

プロセスは次のようになりますが、異なるサーバーは同じクライアントに対して異なる session_id を生成するため、異なるサーバーは同じセッションコンテンツを取得できません。さらに、PHP のデフォルトの SESSION データは、このサーバーのファイル システムに別途保存されます。

したがって、セッション共有を解決したい場合は、

2 つの問題

を解決する必要があります:

1. 複数のサーバーが同じ session_id を使用します

1

  • 2

  • 3

  • 4

  • 3 . ストレージ エンジンの選択方法

デフォルトのファイル ストレージ: このセッション破棄方法は、同時実行性が高い場合や破棄時間が長い場合、大量のもちろん、SESSIONディレクトリにファイルが生成されます。SESSIONファイルは階層ディレクトリに保存されます。これにより、2 つの問題が発生します。1 つは、ファイルの検索が遅いということです。2 つ目は、各ディレクトリに収容できるファイルの数が制限されているため、新しい SESSION の保存に失敗する可能性があります。

  • データベースストレージ: セッションをデータベースに保存すると、セッションデータがガベージコレクターによって削除されるのを防ぎ、セッションデータを固定して保存できます。ただし、データベースを使用してセッションを同期すると、データベースの IO が増加し、データベースの負荷が増加します。さらに、データベースの読み取りおよび書き込み速度が遅いため、セッションをタイムリーに同期できません。

  • memcache ストレージ:

  • この方法でセッションを同期すると、データベースの負荷が増加せず、ファイルから読み取るよりも安全です。の。
  • しかし、memcache はメモリをさまざまな仕様のストレージ ブロックに分割します。この方法では、memcache がメモリを完全に利用できないと判断され、ストレージ ブロックが不足するとメモリの断片も生成されます。オーバーフロー
  • が発生しました。
  • 「分散」する必要がない、共有する必要がない、または単純にサーバーが 1 つしかないほど小さいアプリケーションの場合、memcached は何のメリットももたらしません。それどころか、システムの速度が低下します。ネットワーク接続にもリソースが必要となるため、効率が向上します。

  • Redis ストレージ: memcache と比較すると、redis アクセスは若干遅いという利点があります:

    • redis はより多くのデータ構造をサポートし、配列またはオブジェクトを保存できますが、memcache は文字列のみを保存できます。

      セッションマシンが再起動されると、memcacheのすべてのユーザーはセッションを取り戻す必要がありますが、redisはそうではありません
    • 突然のユーザーの流入と大量のデータの場合、セッションを保存しているマシンのメモリがいっぱいになります、memcache はストライクになり、すべてのキーの有効期限が切れていない場合は、最後に書き込まれたデータを上書きし続けますが、redis は速度が低下するだけで、プログラムのロジックには影響しません
    • 関連する推奨事項:

    PHPで複数サーバーを実装するセッション共有 NFS共有方法_PHPチュートリアル

    以上がPHP はマルチサーバー SESSION 共有を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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