re1。
私の経験からの違いは巨大です。シナリオでは、セッションが作成または変更されるたびに、db書き込みが生成されます。ユーザーがサイトにアクセスするたびに、db読み取りが生成されます。これをDBから移動すると、リクエストごとに少なくとも1つのクエリが保存されます。
この追加のトラフィックに加えて、通常のアプリトラフィックは、データベースのパフォーマンスを簡単に低下させる可能性があります。
再。2.2。
dbでバックアップされたセッションの場合でも、ユーザーが1回ログに記録されていることを確認する明確な方法はありません(すべてのセッションデータを読み取り、それを選択解除してからフィルタリングすることは明確な方法ではありません:))
これを行うには、おそらくキャッシュを使用します。ユーザーがログインするたびに、ここにキー(user:<user_id>など)があるかどうかを確認します。保存されている値はセッションIDになり、現在のセッションが異なる場合は1つ保存-古いセッションを期限切れにし、新しいセッションIDを保存します。
ただし、これでも常に機能するとは限りません。ブラウザのタブ/ウィンドウが同じCookieを共有し(特にSESSION_EXPIRE_AT_BROWSER_CLOSEがFalseの場合-デフォルト)、セッションはCookieベースのみです。