2010-12-21 286 views
0

我知道在後端代碼(java或php或其他)中不能有全局變量,並且不同的用戶(以及會話)看到相同的值。如果我需要在這些用戶會話中共享一些值,我需要將它們寫入數據庫並每次讀出。這對我來說似乎非常浪費。在多個會話中共享變量

我知道apache進程(或應用程序服務器)將fork,所以具有全局值將無法工作,但如果我正在尋找一個專門的應用程序是否有一個web服務器,讓我這樣做?這應該可以在使用線程而不是分叉進程的Web服務器中實現。但是如果我需要共享全局內存,我需要有一些鎖來正確訪問它們。我知道它可能(並且大部分會)變得非常麻煩,但是與數據庫相比,它會降低性能嗎?

想法?

  • 帕烏

回答

0

我不知道這是完全正確的。 Apache將單獨處理每個用戶連接 - 正確。但是,我知道在Java中,可能存在一個Singleton對象,該對象在應用程序的整個生命週期中都存在,您可以在其中存儲要在所有用戶會話中使用的值。

在處理服務器端的每個用戶連接時,每個對該單例的訪問都將訪問相同的對象 - 因此它們的值相同。

您可能還想對應用程序作用域對象做更多的研究。由於缺乏用例,我不確定你想要達到的目標,但是你可能會發現Java網絡應用程序在這方面的表現可能比你期望的要高。