我想知道服务器运行php应用程序的功能。以下是我的想法:
客户A类型www.blahblahblah.blah /
我的困惑:如果每个请求都在自己的内存空间中运行,那么什么是持久连接?</ p>
我想知道的第二件事:我可以有一个桌面程序,即特殊的浏览器,它会在我的Web应用程序中连续发送一个特殊的密钥,而我的Web应用程序正在连续地发送密钥以使HTTP连接完全而不是连接减 ? 。[*没有javascript浏览器连接到我的APP]。
这样我可以确认谁作为客户端连接到我的APP而不是连接到INTERNET的人。我知道会话,但他们使http连接更少,然后有欺骗和会话劫持的机会。我知道你可以使会话安全,但我的应用程序仍然不知道客户端是否已经死亡,所以从会话中删除他的数据并告诉其他人客户端等等已断开连接。
抱歉这个愚蠢的长篇问题。
答案 0 :(得分:1)
a)服务器为每个请求处理分配一个单独的内存空间。因此,Singleton只是在单个请求的范围内的单例。关于持久连接(不确定你想到哪一个),例如MySQL的持久连接由Web服务器(例如Apache)处理 - 它为后续请求重用进程(线程),因此它能够将db连接移交给下一个请求。 (实质上,持久性和单身人士在不同的层面上发生,因此具有不同的能力)。
b)HTTP本身就是一个无连接协议,你只能通过假设事物来模拟持久性(例如,每60秒请求一次Ajax ping,当用户在超过60秒内没有显示任何活动时,你可以认为他是现在断开了)。如果您需要完全确定某人是否已连接,而不是,则需要查找套接字连接(例如Java applet)。即使这样也不能保证100%的结果,因此连接中的超时是“发明的”。
c)如果你非常担心会话劫持,你应该使用SSL(https),没有人能够弄清楚会话ID是什么(除了用户自己在浏览器中寻找cookie,但是他会劫持自己的会议?)