小编Loï*_*ron的帖子

PHP - 预加载所有类/函数

有没有办法预加载(而不是自动加载)PHP 项目的所有类/函数?

我正在考虑使用 PHPFastCGI 运行的 Web 应用程序(因此我们可以引导它的一部分并在请求之间重用这一位),并且它使用了 Composer(它的类映射可以用于此目的吗?)。

这是一些背景:

“常规” PHP 应用程序处理单个请求,然后它们就会被杀死。预加载所有类/函数意味着有更长的启动时间,仅自动加载用于请求的类是一个聪明的优化,但它可以进一步改进(它们需要许多缓慢的“读取文件系统”操作),通常通过分组在单个文件中可能用于所有请求的类(这是ClassPreloader解决的问题)。

然而,启动一个应用程序只处理一个请求然后终止它并不是唯一的选择:使用PHP FastCGI可以在请求之间保持应用程序处于活动状态。这允许我们从请求/响应时间中减少启动时间(例如,将来自 DIC 的所有服务实例化一次)。

在分析我的应用程序时,我注意到自动加载总是出现在前 10 个最昂贵的独占函数调用中。在 PHP FastCGI 应用程序中,在启动阶段移动类加载以从请求/响应时间完全删除它可能是有意义的。我正在尝试找出答案(我会做一些基准测试并发布结果)。

有关这种运行 PHP 应用程序的“奇特”方式的更多信息,请参阅:

  • 使用 ReactPHP 使您的应用程序保持活动状态:http ://marcjschmidt.de/blog/2014/02/08/php-high-performance.html
  • Fabien Potencier 谈论它:https : //youtu.be/gpNbmEnRLBU
  • 使用 PHPFastCGI 让 FastCGI(例如 php-fpm)管理 PHP 进程:http ://andrewcarteruk.github.io/slides/break-boundaries-with-fastcgi/
  • 使用 Aerys,一个非阻塞的 HTTP 应用程序:http ://blog.kelunik.com/2015/10/21/getting-started-with-aerys.html
  • 使用 AppServer,一个原生 PHP Web 服务器:http : //www.sitepoint.com/appserver-a-production-ready-php-based-server/

php fastcgi composer-php

1
推荐指数
1
解决办法
1795
查看次数

标签 统计

composer-php ×1

fastcgi ×1

php ×1