2009-04-30 14 views
1

私は、ユーザーがページにアクセスするのに十分な権限/ロール/権限を持っているかどうかを確認する必要のあるWebアプリケーションを持っています。私はUSER_IDROLE_IDという表のユーザー権利を設定しました。ユーザーがアプリケーションにログインすると、このユーザーのレコードを読み取り、文字列を構成してセッション変数に割り当てます。ログインしたユーザーが各ページにアクセスすると、セッション変数から値を読み取り、文字列を解析して、そのユーザーに十分な権限が割り当てられているかどうかを確認します。セッション変数とパフォーマンスへのアクセス

これで、すべてのページの読み込み時にセッション変数にアクセスすると、パフォーマンスに影響するかどうかわかりません。これを解決する別の方法はありますか?

+2

あなたは恐怖に基づいていますか? – SilentGhost

答えて

2

パフォーマンスが大幅に向上するはずです。

セッションのロードにはある程度のリソースが必要ですが、通常はデータベースからレコードを取得するために必要なリソースよりもはるかに少なくなります。接続の作成、認証、クエリの解析、レコードの取得、それをネットワーク経由で送信します。これに比べて、セッションファイルをハードディスクから取り出す方がはるかに高速です。

時期尚早に最適化しようとしているように聞こえます。しばらく待ってから、ボトルネックが本当にどこにあるかを監視する必要があります。

+0

「[テストする前に待っています]」と記載されています。待たずに、私は過去に多くの時間を無駄にしていました。 – KyleFarris

0

グレッグが上に述べたことに加えて。

phpには2種類のセッションがあります。データベースに格納されたセッションとファイルに格納されたセッション(通常は/ tmp/session_somethingにあります)。

データベースオプションには、ソケットの作成とデータの送信/取得にオーバーヘッドがあります。セッションが複数のサーバー/マシン間で抱き合うことができるなどの利点があります。

LinuxのようなOSがメモリ内のファイルへの読み書きをキャッシュ/バッファできるので、ファイルに格納されているセッション情報の2番目のオプションは、おそらくパフォーマンスにとって最適です。

簡単な答えは、オーバーヘッドが何もない、炎の餌にならないことを心配してはいけませんが、パフォーマンスについて本当に気にしていたら、PHPを使用しません。

1

native session handler of PHPを使用した場合、セッションデータにアクセスしたかどうかにかかわらず、セッションが使用されるたびに、要求ごとにセッションデータが取得される可能性があります()。そして、データを格納するdefault session handler uses filesとして、それはすべての要求でもファイルを読み込みます。

これを最適化したい場合は、セッションを保存する場所にある種類のキャッシュを使用することができます。APCMemcacheなどのメモリキャッシュがあります(this comment to the session_set_save_handler functionも参照)。

+1

apcは共有キー/バリューメモリアクセスも提供します。より速く、あなたがただ一つのサーバを持っているなら、問題がある場合はそれ以上です。 – stefs

+0

http://www.php.net/manual/en/ref.apc.php(それは、memcacheよりも高速ですがスケーラブルではないことを意味します) – stefs

+0

Schnalle氏のご意見ありがとうございます。 – Gumbo

2

いいえ、1秒あたり何百人ものユーザーがいない限り、顕著な方法でサイトのパフォーマンスに影響を与えません。

しかし、私は何かに気づいた:私はこのユーザーのレコードを読み込み、文字列を構築し、セッション変数に割り当てることになる

(...を)。ログインしたユーザーが各ページにアクセスすると、セッション変数から値を読み取り、文字列(...)を解析します。

a-ha!セッションは、session_start()(通常はserialize()unserialize()がこれに使用されます)でエンコードされ、解析される文字列にすぎません。セッションに保存するデータを手動でエンコードする必要はありません。これはユーザーのために行われます(カスタムメソッドよりも高速ですが、これらの機能はコアに実装されているため)。

+0

申し訳ありません。これはPHPアプリケーションであることを忘れています。 – Shyju

関連する問題