Php 服务器和请求理解

Php 服务器和请求理解,php,static,request,Php,Static,Request,我想知道服务器如何运行php应用程序。以下是我的想法: 客户端A键入www.blahblahblah.blah/ 服务器解析url和目录等 服务器转到index.php php中有一个单例模式类,其中包含一个名为instance的静态变量。现在,服务器是否将内存分配给自己RAM中的静态变量,以便第一个请求之后的所有请求都使用相同的静态变量,或者对于每个新请求,服务器是否分配一个新内存,并且新内存将为该静态变量分配一个新空间 我的困惑是:如果每个请求都在自己的内存空间中运行,那么什么是持久连接 我

我想知道服务器如何运行php应用程序。以下是我的想法:

客户端A键入www.blahblahblah.blah/

  • 服务器解析url和目录等
  • 服务器转到index.php
  • php中有一个单例模式类,其中包含一个名为instance的静态变量。现在,服务器是否将内存分配给自己RAM中的静态变量,以便第一个请求之后的所有请求都使用相同的静态变量,或者对于每个新请求,服务器是否分配一个新内存,并且新内存将为该静态变量分配一个新空间
  • 我的困惑是:如果每个请求都在自己的内存空间中运行,那么什么是持久连接

    我想知道的第二件事是:我是否可以有一个桌面程序,即特殊浏览器,它不断地向我的web应用程序发送特殊密钥,而我的web应用程序不断地发回密钥,以使HTTP连接完全,而不是减少连接。[*如果没有javascript,浏览器将连接到我的应用程序]
    这样,我可以确认谁作为客户端连接到我的应用程序,而不是谁连接到互联网。我知道会话,但它们减少了http连接,因此存在欺骗和会话劫持的机会。我知道你可以使会话安全,但我的应用程序仍然不知道客户端是否已死亡,所以请从会话中删除他的数据,并告诉其他人客户端blah已断开连接

    很抱歉问了这么长时间的问题

    a)服务器为每个请求处理分配单独的内存空间。因此,Singleton仅在单个请求的范围内。关于持久性连接(不确定您想的是哪一个),例如MySQL的持久性连接是由Web服务器(例如Apache)处理的-它为后续请求重用进程(线程),因此它能够将db连接移交给下一个请求。(本质上,持久性和单例发生在不同的层上,因此具有不同的能力)

    b) HTTP本身是一种无连接协议,您只能通过假设来模拟持久性(例如,每60秒请求一次Ajax ping,当用户在超过60秒的时间内未显示任何活动时,您可以假设他现在已断开连接)。如果你需要对某人是否连接完全有信心,你需要寻找套接字连接(例如Java小程序)。即使这样也不能保证100%的结果,因此连接超时是“捏造的”

    c) 如果您非常担心会话劫持,那么您应该使用SSL(https),并且没有人能够知道会话id是什么(除了用户自己在浏览器中寻找cookie,但他是否会劫持自己的会话?

    a)服务器为每个请求处理分配单独的内存空间。因此,Singleton仅在单个请求的范围内。关于持久性连接(不确定您想的是哪一个),例如MySQL的持久性连接是由Web服务器(例如Apache)处理的-它为后续请求重用进程(线程),因此它能够将db连接移交给下一个请求。(本质上,持久性和单例发生在不同的层上,因此具有不同的能力)

    b) HTTP本身是一种无连接协议,您只能通过假设来模拟持久性(例如,每60秒请求一次Ajax ping,当用户在超过60秒的时间内未显示任何活动时,您可以假设他现在已断开连接)。如果你需要对某人是否连接完全有信心,你需要寻找套接字连接(例如Java小程序)。即使这样也不能保证100%的结果,因此连接超时是“捏造的”


    c) 如果您非常担心会话劫持,您应该使用SSL(https),没有人能够知道会话id是什么(除了用户自己在浏览器中寻找cookie,但他是否会劫持自己的会话?

    感谢您的谅解,你能给我一些我能读到的链接,上面说服务器在不同的内存中运行每个请求吗?我想你必须在每个请求上做一些谷歌搜索,看看它们是如何工作的。我真的没有任何一个资源可以推荐。谢谢你的理解,你能给我一些我能读到的链接吗,上面说服务器在单独的内存中运行每个请求。我想你必须在每个请求上做一些谷歌搜索,并详细了解它们是如何工作的。我真的没有任何资源可供建议。请花一些时间思考当用户点击“后退”按钮或打开新窗口时会发生什么。请花一些时间思考当用户点击“后退”按钮或打开新窗口时会发生什么。