我需要一些帮助来理解PHP的内部运作。请记住,在过去,我们曾经写过TSR(终止并保持常驻)例程(Pre-windows era)吗?一旦该程序执行完毕,它将保留在内存中,并可以通过某个热键(alt或ctrl-键组合)重新执行。PHP架构:我该怎么做?
我想在Web服务器/应用程序中使用类似的概念。比如说,我有common_functions.php,它由普通函数(如Generate_City_Combo()或Check_Permission()或Generate_User_Permission_list()等)组成,并运行在该apache/php服务器上运行的所有Web应用程序中。
在所有的模块或应用程序的PHP文件,我可以写:
require_once(common_functions.php);
它将在所有模块和应用程序中包含该通用文件,并且工作正常。
我的问题是:如何在内部处理这个问题?假设我有: 两个应用程序AppOne和AppTwo。
AppOne有两种菜单选项AppOne_Menu_PQR和AppOne_Menu_XYZ
AppTwo有两种菜单选项AppTwo_Menu_ABC和APPTwo_Menu_DEF
这四个菜单项的调用函数{像Generate_City_Combo(),或Check_Permission()或Generate_User_Permission_list()}从common_functions。 php
现在考虑以下情况: 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请求。作为老C开发人员,我觉得它非常高效。有出路吗? 谢谢 Shailesh。 – 2010-02-27 04:36:42
这是PHP工作方式的固有特性 - 它在技术上被设计为一个预处理器(尽管它自创建以来已经有所改进)。 PHP解释器无法同时处理多个请求,因为它旨在由单独的服务器调用(而不是单独运行)。 – Amber 2010-02-27 06:21:06