有没有办法预加载(而不是自动加载)PHP 项目的所有类/函数?
我正在考虑使用 PHPFastCGI 运行的 Web 应用程序(因此我们可以引导它的一部分并在请求之间重用这一位),并且它使用了 Composer(它的类映射可以用于此目的吗?)。
这是一些背景:
“常规” PHP 应用程序处理单个请求,然后它们就会被杀死。预加载所有类/函数意味着有更长的启动时间,仅自动加载用于请求的类是一个聪明的优化,但它可以进一步改进(它们需要许多缓慢的“读取文件系统”操作),通常通过分组在单个文件中可能用于所有请求的类(这是ClassPreloader解决的问题)。
然而,启动一个应用程序只处理一个请求然后终止它并不是唯一的选择:使用PHP FastCGI可以在请求之间保持应用程序处于活动状态。这允许我们从请求/响应时间中减少启动时间(例如,将来自 DIC 的所有服务实例化一次)。
在分析我的应用程序时,我注意到自动加载总是出现在前 10 个最昂贵的独占函数调用中。在 PHP FastCGI 应用程序中,在启动阶段移动类加载以从请求/响应时间完全删除它可能是有意义的。我正在尝试找出答案(我会做一些基准测试并发布结果)。
有关这种运行 PHP 应用程序的“奇特”方式的更多信息,请参阅: