2010-12-21 35 views
0

私は私が私のバックエンドのコード(JavaやPHPや他の何か)でグローバル変数を持っており、異なるユーザ(ひいてはセッション)を持っていないことを知って同じ値を参照してください。これらのユーザーセッションでいくつかの値を共有する必要がある場合は、DBに書き込んで毎回読む必要があります。これは私には大変無駄です。共有変数

私はApacheのプロセス(またはアプリケーションサーバー)がフォークされますので、持つグローバル値が動作しませんが、私は専門的なアプリケーションで探していた場合、私はこれを行うことができますウェブサーバがあることを理解できますか?これは、プロセスをフォークする代わりにスレッドを使用するWebサーバーで可能になるはずです。しかし、グローバルメモリを共有する必要がある場合は、適切にアクセスするために何らかのロックが必要になります。私はそれができた(と主になります)本当にバグが多いが、それはDBに比べてパフォーマンスが低下します得ることを理解できますか?

思考?

  • パヴ

答えて

0

私は、それは完全に本当だか分かりません。 Apacheは個々のユーザー接続を個別に処理します。しかし、私はJavaで、あなたが潜在的にすべてのユーザーセッションにまたがって使用される値を格納することができているアプリケーションの生活のために存在するシングルトンオブジェクトを持つことが可能であることを知っています。サーバ側の各ユーザ接続を扱う際

、このシングルトンへの各アクセスは、同じオブジェクトにアクセスする - したがって、同じ値。

あなたにもアプリケーションスコープオブジェクトにいくつかのより多くの研究をしたいかもしれません。ユースケースの不足により達成しようとしていることを正確にはわかりませんが、Java Webアプリケーションがこの領域で期待以上に多くのことを行うことができます。

関連する問題