1

簡単に検索しましたが、関連するすべての質問が私のポイントに完全に到達していないか、具体的すぎて私を助けることができないようです。

私の最初の考慮事項はパフォーマンスです。私の理解では、デフォルトで情報を保存する$_SESSIONということは、サーバーがファイルをディスクに書き込むことを意味します。$_SESSION小さなLAMPサーバーまたは基本的な小さなホストされたWebサイトの場合、データベースがより効率的なオプションになる前に、変数をどのくらい大きくする必要がありますか。$_SESSION代わりにデータベースの使用を検討し始める場所に、10、100、1000、10000の配列メンバーがありますか?それとも、トラフィックはもっと考慮されますか?

2番目の考慮事項はセキュリティです。他のいくつかの回答では、「 xxxを$_SESSION変数に格納しない」などのステートメントを見たことがあります。データベースに情報を保存すると、実際には、よりも安全になります$_SESSIONか、それとも$_SESSIONサーバーが正しく設定されていれば、データベースと同じくらい安全になりますか?

私の考えでは、実際に開発された多くのサイトは、最初から使用$_SESSIONを開始し、必ずしもデータベースを使用するためにリファクタリングされるとは限りません。$_SESSIONとにかく変数をファイルからデータベースにリダイレクトできる場合は、パフォーマンスが問題になる場合は、それを使用$_SESSIONして後でデータベースに向けることをお勧めします。

この設計を選択するために他に考慮すべき点はありますか?

4

3 に答える 3

3

データベースに保存するものは何でも無期限に永続的であるのに対し、セッションはユーザーがログアウトするか期限切れになるまでしか持続しないという主なものが欠けています。

したがって、セッションではなくデータベースに何かを保存する主な理由は、それを保持したいからです

スケーラビリティが必要なサイトでは、実際にはセッションをデータベースに保存するため、パフォーマンスに関する最初のポイントは関係ありません。

セキュリティに関しては、セッション データが適切に暗号化されている限り、十分に安全です。

于 2013-03-12T11:56:08.553 に答える
1

個人的には、最小限の情報を保存するためにのみセッションを使用します。セッションに 10,000 個の配列アイテムを格納する必要がある場合は、おそらく別の方法で記述できます。

デフォルトでは、PHP セッションはディスクに保存されます。

一部のディストリビューションには、suosin http://www.hardened-php.net/suhosin/と呼ばれる強化された PHP が付属しており、セッションを暗号化するように設定できます。

セッションがどれほど効率的であるかについては、非常に良いと思います。おそらくそれについて心配する必要はありません。問題が発生した場合は、セッションをディスク/データベースではなくメモリに保存することをお勧めします。

PHP セッションの保存/読み込み方法を変更することができます。これを確認してください: http://php.net/manual/en/session.customhandler.php

于 2013-03-12T11:56:41.717 に答える
0

セッション ファイルのサイズについてあまり心配する必要はないと思いますが、データベースを使用する方がスケーラブルであることを考えると、小規模から中規模のサイトのパフォーマンスの大きな違いに気付くとは思えません。

セキュリティの観点から、ユーザー データ (ユーザー名、ハッシュ、電子メール) をセッションに保存することはお勧めしません。純粋にセッションを使用したい場合は、CodeIgniter のような多くのフレームワークが提供するセッションの暗号化を調べることができます。

結論として、私の意見では、ユーザー情報 (IP アドレスを含む) には常にデータベースを使用し、一般的なデータ (検索用語、分析など) にはセッションを使用する必要があります。

これがあなたの決定に役立つことを願っています。

よろしく、ジェームズ

于 2013-03-12T11:53:25.053 に答える