我需要一些帮助来理解 PHP 的内部工作原理。
还记得,在过去,我们曾经编写过 TSR(Terminate and stay resident)例程(Windows 之前的时代)吗?一旦执行该程序,它将保留在内存中,并且可以通过一些热键(alt-或 ctrl-组合键)重新执行。
我想在 Web 服务器/应用程序中使用类似的概念。比如说,我有 common_functions.php,它包含在该 apache/php 服务器上运行的所有 Web 应用程序的通用函数(如 Generate_City_Combo()、Check_Permission() 或 Generate_User_Permission_list() 等)。
在所有模块或应用程序的 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 调用函数 { like Generate_City_Combo(), or Check_Permission() or 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内部工作的某个地方或一些书籍吗?
提前致谢。