我知道我的后端代码(java或php或其他东西)中没有全局变量,并且不同的用户(以及会话)看到相同的值。如果我需要在这些用户会话中共享一些值,我需要将它们写入数据库并每次都读出来。这对我来说似乎非常浪费。
据我所知,apache进程(或应用服务器)将进行分叉,因此具有全局值将无法工作,但如果我正在查看专用应用程序,是否有一个Web服务器可以让我这样做?这应该可以在使用线程而不是分叉进程的Web服务器中实现。但是如果我需要共享全局内存,我需要使用某种锁来正确访问它们。我知道它可能(并且大部分都会)变得非常错误,但与DB相比会降低性能吗?
思想?
答案 0 :(得分:0)
我不确定这是完全正确的。 Apache将单独处理每个用户连接 - 正确。但是,我知道在Java中可以有一个Singleton对象,该对象在应用程序的生命周期中存在,您可以在其中存储要在所有用户会话中使用的值。
在处理服务器端的每个用户连接时,对此Singleton的每次访问都将访问同一个对象 - 因此值相同。
您可能还想对应用程序范围对象进行更多研究。由于缺少用例,我不确定你想要实现的目标,但你可能会发现Java Web应用程序可以做的比你预期的要多。