ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
https://medium.com/@dimdev/9-php-runtimes-performance-benchmark-cbc0527b9df9 **测试环境** * 每个运行时在1或2个Docker容器中运行 * 每个容器有1个CPU和1GB RAM * 负载测试工具位于同一Docker网络中 **测试应用程序** Symfony提供了运行时组件。根据官方文档,它“从任何全局状态中提取引导逻辑,以确保应用程序可以在运行时运行,如”。这意味着,您可以使用任何您喜欢的运行时来开发应用程序,但在生产中运行最高性能。因此,我们不仅可以使用传统的服务器运行应用程序,还可以使用Swoole,AMPHP和ReactPHP等库。展望未来,最后两人被排除在竞争之外。 **负载测试工具** K6用于运行负载测试。每个运行时运行3次,30秒内有10、100和1000个并发连接。 **运行时** * Apache(prefork模式)+ mod_php * Apache(事件模式)+ PHP-FPM * Nginx + PHP-FPM * Nginx Unit应用服务器 * Nginx Unit应用服务器 * Nginx + Roadrunner(fcgi模式) * FrankenPHP * FrankenPHP(worker模式) * Swoole 所有运行时都基于官方Docker镜像。如果不使用镜像,则在构建过程中将应用程序的代码复制到镜像中。PHP 8.3无处不在,除了Nginx Unit。2024年初,Nginx Unit支持的最高PHP版本为8.2。 不幸的是,我没有找到与Symfony 7兼容的最新版本的ReactPHP和AMPHP运行时。PHPPM GitHub和Dockerhub看起来都被抛弃了。 应用以下PHP和Symfony设置: * 使用php.ini-production(附带官方Docker容器) * 已启用Opcache * 启用JIT * 根据Symfony最佳实践配置preload * Composer自动加载器已优化 * Symfony在生产模式下运行 * 服务容器转储到单个文件 * Symfony缓存在容器构建期间预热 **结果** img 应用程序代码以及容器配置可以在GitHub https://github.com/DimDev/php-runtimes-benchmark上找到。 ![](https://img.kancloud.cn/e5/df/e5df2a962e75ecd46b1ec4f41e671feb_720x391.png)