2

必要に応じて複数のサーバーに移植したいPHPシステムがあります。現在、PHPが行うデフォルトの方法で、ユーザーの現在のセッション情報を保存しています(メモリ内にあると想定)。MySQLデータベースのテーブルに配置する必要があるものの例と、実装の例を取得できますか?

4

1 に答える 1

1

デフォルトのセッションストレージシステムは、実際にはファイルシステム上にあります。一部のシステムキャッシングは、メモリからプルするために使用される場合があります。

ここで、マルチサーバーセットアップに入るには、サーバーは基本的に互いに何も共有する必要はありません。そのためには、セッションを作成してアクセスするサーバーの外部にセッションを保存する必要があります。

データベースにセッションを保存することは1つのオプションですが、データベースの負荷が増大するため、場合によってはロックに注意する必要があります。デフォルトのセッション処理には、一度に1つのスレッドのみが特定のセッションにアクセスできるようにするロックがありますが、データベースハンドラーはそれを行わない場合があります。セッションデータのみを読み取っている場合、これは問題にならない可能性がありますが、変更している場合は問題になる可能性があります。

memcached拡張機能により、memcachedノードへのセッションデータレプリケーションが可能になります。このルートを使用すると、セッションをメモリに保持でき、データベースの負荷を追加する必要がなくなります(多くの場合、スケーリングがより困難になります)。

于 2013-01-21T02:13:40.817 に答える