5

ログイン システムなどを使用している場合、session_id と user_id をセッションに保存しますが、特定のユーザーに関するその他のデータはすべてデータベースに保存します。セッションで他のデータ (ユーザー名、電子メールなど) を保存する他のスクリプトを見てきました。

どれが「より良い」だろうか?DB からセッションにデータを保存するか、セッションを減らしてデータベースからデータを取得しますか?

ありがとう!

4

3 に答える 3

3

に好きな情報を保存できます$_SESSION。最大128Mbになる可能性があると思います-制限はmemory_limitデフォルトで128Mbによって管理されます。これを変更できます。

ただし、経験則として、データベースにクエリを実行するよりも適切な情報や安価な情報を保存します。別の言い方をすれば、できる限り少なくします

間違いなく使用方法によって大きく異なりますが、多くの場合、セッションには次のようなものが含まれています。

  • ユーザー名
  • フルディスプレイ名
  • 電子メールアドレス
  • ID(ユーザーまたはその他)
  • 権限
  • ユーザーグループ
  • ハッシュ
  • フォーム入力エラー(一時的に、フォームエラーを強調表示するため)

ただし、速度/規模の理由から、データ/情報の大きなブロックを保存することはお勧めしません。

サイト/プラットフォームを後日、適切な時点で拡張する必要がある場合は、頻繁に使用される/必要なデータ(Memcachedなど)のライトスルーキャッシュなどを調べて、データの大部分をに保存することをお勧めします。あなたのDB-どこにあるべきか。

お役に立てれば。

于 2012-11-06T18:09:51.930 に答える
3

答えは場合によるということです。あなたの場合は、おそらく問題にならないでしょう。

セッションアプローチ

  • クエリが少ない = 速い

DBアプローチ

  • セッション内のデータが少ないため、クロバリングが防止されます
  • セッションの同時更新を気にせず、DBへの更新を即時反映
于 2012-11-06T18:07:55.950 に答える
2

実際には、データベースにデータを保持する方が良いことが示されています (>= 中規模のプロジェクト (サーバー ファーム/セッション内の実際に大量のデータ) の場合、またはあらゆる種類のプロジェクト (共有ホスティングなど) のセキュリティを強化する場合)。ユーザー ID も に保持しないでください$_SESSION。ハッシュ、フラッシュ メッセージ、クイック設定 - それが$_SESSION.

しかし、「DB にセッションを保存する必要がありますか?」という質問がまだある場合は、おそらく DB に保存しないでください。

于 2012-11-06T18:35:50.053 に答える