问题的一些背景
我刚刚浏览了moodle CMS中使用的一些 *.php 文件。Moodle 使用 PHP 脚本来生成动态发送给访问者的 HTML 页面内容。通常会发生这样的事情(“包含级联”):
// file: file1.php
require(file2.php);
和
// 文件:file2.php 需要(file3.php); 需要(file4.php);
ETC...
实际上,从请求的 *.php 文件开始,直到最终产生一些输出,都需要包含大量其他文件。即使这很有意义,它也会因为它对速度/性能的影响而让我担心。似乎每次都重做很多初始化。
问题
知道 HTTP 协议是无状态协议,在我看来,对于发送到服务器的每个请求,都需要一遍又一遍地运行 PHP/CGI 代码中完成的所有可能的初始化。这是一个有效/真实的假设吗?
示例:我需要访问数据库,我想安全地使用一些对象来帮助完成所有这些“更安全”的准备语句/清理等操作。因此,用于此的对象是在我包含的文件中创建的(即myDatabaseAccessObject.php
)。
关于这个例子,问题是:
这是否是真的,由于 HTTP 的性质是无状态的,没有机会myDatabaseAccessObject.php
在每次请求时阻止重新完成设置(即解析)的工作?
或者 PHP 是否有办法缓存已经完成的工作?(如果是这样,是以透明的方式完成的(即脚本作者可以告诉缓存什么)或模糊的方式,php引擎做了一些作者不可见的缓存吗?)
是我对正在发生的事情有绝对有缺陷的看法,还是确实一遍又一遍地完成了工作,如果在多个后续请求之间保存了 PHP 脚本所需的一些初始化,则可以保存这些工作?