0

0

如何让你的Laravel在15毫秒内返回一个"hello world!"

藏色散人

藏色散人

发布时间:2021-03-25 17:19:29

|

2291人浏览过

|

来源于learnku

转载

下面由laravel教程栏目给大家介绍如何让你的Laravel在15毫秒内返回一个"hello world!",希望对需要的朋友有所帮助!

首先,我认为通过返回最基本的hello world!字符串,是所有以laravel为框架的项目中,最基本的一个请求过程。除此以外,项目中的任何http请求,都会带有更多的业务逻辑和数据库查询等耗时操作,且这些逻辑的执行时间都是不可控和不可对比的。也就是说,其他任何请求都不会比返回一个hello world!字符串更短的时间了。所以,通过对比这个最基本的hello world请求响应时间,我们可以看出,不同的优化对于laravel框架从启动到执行结束的影响。

推荐:最新的五个Laravel视频教程

测试参数

参数 版本
服务器 1c处理器,1G内存,1M带宽
PHP版本 8.0
进程管理 PHP-FPM

默认配置响应时间

让你的Laravel在 15 毫秒内返回一个

可以看出,在安装PHP后,默认配置情况下,返回一个Hello world!平均需要140ms左右。接下来,我们开始搞事情了!

Round 1:Laravel 缓存

Laravel为我们提供了很方便的artisan命令来开启缓存功能,有效的减少了文件读取次数。其中php artisan optimize命令包括了php artisan config:cachephp artisan route:cache命令,但是会多出现一个Files缓存。将下面的 5 个命令依次执行:

root@Aliyun-ECS / # php artisan optimize
root@Aliyun-ECS / # php artisan config:cache
root@Aliyun-ECS / # php artisan event:cache
root@Aliyun-ECS / # php artisan route:cache
root@Aliyun-ECS / # php artisan view:cache

我们再看下响应时间:

让你的Laravel在 15 毫秒内返回一个

可见Laravel的缓存对于最基础的请求,没有明显的影响。

Round 2:开启 opcache

这次,我决定使用提速效果最明显的手段:开启opcache扩展。由于本人是使用的 remi 源安装的php8,所以我这里安装opcache扩展会比较容易,其他版本的安装请自行 Google。

root@Aliyun-ECS / # yum install php80-php-opcache

等待安装结束后,我们重启php,然后看下扩展是否已经安装上:

root@Aliyun-ECS / # systemctl restart php80-php-fpm
root@Aliyun-ECS / # php -i|grep opcache.enable
opcache.enable => On => On
opcache.enable_cli => On => On
opcache.enable_file_override => Off => Off

ok,已经开启opcache扩展了,我门再来看下Hello world!的响应时间:

让你的Laravel在 15 毫秒内返回一个

OHHHHHH!效果太明显了,一下子降到 30ms 以内,提升足足有将近 5 倍 的响应时间。注意一下,在第一次请求时,会比较慢,是因为opcache在写缓存导致的,访问过一次以后,速度就飞起了。到这里你就满足了吗?看看文章标题,我们要进一步加大力度!

Round 3:开启 swoole

swoole模块大家都懂,就是将应用程序提前加载到内存中,从而在处理请求时,减少文件的读取和加载过程,为PHP插上了翅膀。下面安装swoole扩展,其他版本的请自行 Google。

‎ Gemini Storybook
‎ Gemini Storybook

Google Gemini推出的AI绘本生成工具

下载
root@Aliyun-ECS / # yum install php80-php-pecl-swoole

老样子,安装完后检查下是否安装成功:

root@Aliyun-ECS / # systemctl restart php80-php-fpm
root@Aliyun-ECS / # php -i|grep swoole.enable
swoole.enable_coroutine => On => On
swoole.enable_library => On => On
swoole.enable_preemptive_scheduler => Off => Off

扩展已经启用了,但是还无法进行测试。因为 swoole 是一个 cli 模式下的扩展,php-fpm无法使用。所以我们需要实现一个cli模式下的http应用。但实际上我们无需自己手动编写http应用,社区中有大佬已经写好了。所谓「前人种树,后人乘凉」,我们引入 laravel-swoole 软件包,再启动一个http服务即可,很简单。

// 引入软件包
root@Aliyun-ECS / # composer require swooletw/laravel-swoole
// 发布配置文件
root@Aliyun-ECS / # php artisan vendor:publish --tag=laravel-swoole

执行以上两步操作后,即可在项目的config目录下找到swoole_httpswoole_websocket两个配置文件。一个基本的Hello world!测试,无需修改默认配置,我们只在项目的.env文件中,添加SWOOLE_HTTP_HOST=0.0.0.0SWOOLE_HTTP_PORT=2020即可,意思是在2020端口启动一个http监听程序。0.0.0.0指任何IP都可远程访问。

// .env
SWOOLE_HTTP_HOST=0.0.0.0
SWOOLE_HTTP_PORT=2020

基本配置修改完成,我们启动laravel-swoolehttp应用:

root@Aliyun-ECS / # php artisan swoole:http start
Starting swoole http server...Swoole http server started: <http://0.0.0.0:2020>

此时我们访问2020端口,即可测试使用swoole扩展后的应用。再看下请求的响应时间:

让你的Laravel在 15 毫秒内返回一个

好家伙!直接干到15ms以内。这里第一次时间较长,是因为开了opcache的原因,会写入缓存。但这里的opcache写缓存,要比Round 2那个只开启opache扩展要快很多,这都是swoole的功劳。

结语

我又测试了一下,单独只启用swoole扩展,不启用opcache,发现响应时间和两个扩展都开启的响应时间一样。也就是说,有了swoole后,opcache就没用了?这个还得请各位大佬指点了。这里简单的做个对比:

让你的Laravel在 15 毫秒内返回一个

通过实践对比,发现同时开启opcacheswoole扩展,是响应时间最快的。

其他问题

  • PHP-FPM进程管理,为什么会创建master进程?不科学呀

感谢

感谢 @Hesunfly 的解答。有时在命令行中用php -i模式查看扩展信息,和在页面中使用phpinfo()查看的扩展信息会有不一致的情况。这里引用下 @Hesunfly 原话:
「有的发行版确实是 clifpm 的配置公用的,例如 mac 使用 brew 安装的 php 就是只有一个 php.ini。 但是我在 centos 和 ubuntu 下安装的一般是区分了clifpm 的。」
file

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chatgpt使用指南
chatgpt使用指南

本专题整合了chatgpt使用教程、新手使用说明等等相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

chatgpt官网入口地址合集
chatgpt官网入口地址合集

本专题整合了chatgpt官网入口地址、使用教程等内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

minimax入口地址汇总
minimax入口地址汇总

本专题整合了minimax相关入口合集,阅读专题下面的文章了解更多详细地址。

4

2026.03.16

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

7

2026.03.16

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

114

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

141

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

396

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

65

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

111

2026.03.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.7万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号