加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP架构:我该怎么做?

发布时间:2020-12-13 17:02:46 所属栏目:PHP教程 来源:网络整理
导读:我需要一些帮助来理解 PHP的内部工作原理. 记住,在过去,我们曾经写过TSR(终止和驻留)例程(Pre-windows时代)?一旦执行该程序,它将保留在内存中,并可通过某些热键(alt-或ctrl-键组合)重新执行. 我想在Web服务器/应用程序中使用类似的概念.比方说,我有common_f
我需要一些帮助来理解 PHP的内部工作原理.

记住,在过去,我们曾经写过TSR(终止和驻留)例程(Pre-windows时代)?一旦执行该程序,它将保留在内存中,并可通过某些热键(alt-或ctrl-键组合)重新执行.

我想在Web服务器/应用程序中使用类似的概念.比方说,我有common_functions.php,它包含常用功能(如Generate_City_Combo()或Check_Permission()或Generate_User_Permission_list()等)到该apache / php服务器上运行的所有Web应用程序.

在所有模块或应用程序的php文件中,我可以写:
require_once(common_functions.php);

这将包括所有模块和应用程序中的公共文件,并且工作正常.

我的问题是:php如何在内部处理这个问题?
说我有:
两个应用程序AppOne和AppTwo.
AppOne有两个菜单选项:AppOne_Menu_PQR和AppOne_Menu_XYZ
AppTwo有两个菜单选项AppTwo_Menu_ABC和APPTwo_Menu_DEF

所有这四个菜单项都从common_functions.php调用函数{如Generate_City_Combo()或Check_Permission()或Generate_User_Permission_list()}

现在考虑以下场景:
A)用户XXX登录并点击其个性化仪表板上的AppOne_Menu_PQR,然后他/她将完成所有屏幕和说明.这是一系列8-10页的请求(屏幕),它是交互式的.在此结束之后,用户XXX从他的个性化仪表板中点击AppTwo_Menu_DEF,并再次像之前他/她一样通过所有屏幕和指令(大约8-10页/屏幕).然后用户XXX注销.

B)用户XXX登录并执行方案A中提到的任何操作.同时,用户YYY也登录(来自其他客户端计算机)并执行方案A中提到的类似操作.

对于方案A,它是相同的会话.对于场景B,有两个不同的会话.

假设所有菜单选项都调用Generate_User_Permission_list()和Generate_Footer()或许多菜单选项调用Generate_City_Combo().

那么每次请求PHP会执行/包含common_functions.php多少次?每次会议?或者每个PHP启动/关闭?我的理解是common_functions.php将在每个页面请求/循环/加载/屏幕执行一次,对吗?基本上每次互动一次.

记住Generate_City_Combo()或Generate_Footer()等函数产生相同的输出或做同样的事情,无论是谁或何时调用.

我想在每个应用程序启动和关闭时将其限制为一次.

这些只是一些例子.我的实际问题要复杂得多.在我的应用程序中,我想只调用一次Application_Startup()例程,这将创建理想的环境(如所有查找和引用数据结构,只读数据,安全矩阵,菜单选项,上下文敏感的业务执行逻辑等. ).之后,所有进入服务器的请求都不需要花费任何时间或资源来创建环境,但可以立即引用“已创建的环境”.

这在PHP中是否可行?怎么样?你能指点我到某个地方或一些解释PHP内部工作的书吗?

提前致谢.

解决方法

PHP在一个完全独立的执行框架中处理每个HTTP请求 – 没有持久的进程运行来为它们提供服务. (您的网络服务器正在运行,但每次加载PHP页面时,都会调用PHP解释器的单独实例.)

如果生成所需持久区域所需的时间很长,您可能希望考虑将这些脚本的输出缓存在磁盘上,并在缓存版本可用时首先加载(而不是过时).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读