RoadRunner 是一个高性能的 PHP 应用服务器、负载均衡器和进程管理器。
RoadRunner 是用 Go 编写的,易于安装,并且功能上替代了 PHP-FPM。
它支持 xDebug 及其替代品,以及诸如 Datadog 和 New Relic 的性能分析和监控工具。
更多详情请参见 RoadRunner 的 文档。
为了确保使用此技术启动的应用程序正常运行,必须开发支持异步模式。
在异步模式中,已加载的框架配置、类、初始化的服务和缓存的数据将被重用,从而显著加速性能。
但是,也存在一些特点,例如需要更加密切地监控内存泄漏并消除阻塞操作,许多熟悉的第三方库不支持异步模式。
在应用程序的逻辑部分存储状态变得不合适,尤其是当它与请求相关时。
框架的 RollbackInterface 旨在每次异步请求后重置状态。
要安装 RoadRunner 的服务器资源,请使用官方仓库: github.com/roadrunner-server/roadrunner。
对于 RoadRunner,您需要修改文件 /public/index.php 以便让 HLEB2 框架在循环中运行。
基本工作的示例:
对于 RoadRunner,还需要在项目根目录创建一个配置文件 .rr.yaml (假设编译后的服务器文件名为 rr 也在该目录下)。
.rr.yaml 中最小工作配置的示例:
version: '3' server: command: 'php ./public/index.php' http: address: :8088 middleware: - gzip - static static: dir: public forbid: - .php - .htaccess pool: num_workers: 6 max_jobs: 64 debug: false supervisor: max_worker_memory: 5 metrics: address: '127.0.0.1:2113'
在此配置中,RoadRunner 通过设置允许的最大内存来限制单个进程(worker)的操作:http.pool.supervisor.max_worker_memory,单位为兆字节。 因此,如果进程超出了此限制,RoadRunner 将正确地终止它并继续下一个。
使用控制台命令启动 RoadRunner 服务器:
$./rr serve
根据配置,应用程序可以通过以下地址访问:
http://localhost:8088
服务器的监控指标使用 Prometheus 格式:
http://localhost:2113