下面由laravel教程栏目给大家介绍如何让你的Laravel在15毫秒内返回一个"hello world!",希望对需要的朋友有所帮助!
首先,我认为通过返回最基本的Hello world!
字符串,是所有以Laravel
为框架的项目中,最基本的一个请求过程。除此以外,项目中的任何http
请求,都会带有更多的业务逻辑和数据库查询等耗时操作,且这些逻辑的执行时间都是不可控和不可对比的。也就是说,其他任何请求都不会比返回一个Hello world!
字符串更短的时间了。所以,通过对比这个最基本的Hello world
请求响应时间,我们可以看出,不同的优化对于Laravel
框架从启动到执行结束的影响。
测试参数
参数 | 版本 |
---|---|
服务器 | 1c处理器,1G内存,1M带宽 |
PHP版本 | 8.0 |
进程管理 | PHP-FPM |
默认配置响应时间
可以看出,在安装PHP
后,默认配置情况下,返回一个Hello world!
平均需要140ms
左右。接下来,我们开始搞事情了!
Round 1:Laravel 缓存
Laravel
为我们提供了很方便的artisan
命令来开启缓存功能,有效的减少了文件读取次数。其中php artisan optimize
命令包括了php artisan config:cache
和php 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
的缓存对于最基础的请求,没有明显的影响。
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!
的响应时间:
OHHHHHH!效果太明显了,一下子降到 30ms
以内,提升足足有将近 5 倍 的响应时间。注意一下,在第一次请求时,会比较慢,是因为opcache
在写缓存导致的,访问过一次以后,速度就飞起了。到这里你就满足了吗?看看文章标题,我们要进一步加大力度!
Round 3:开启 swoole
swoole
模块大家都懂,就是将应用程序提前加载到内存中,从而在处理请求时,减少文件的读取和加载过程,为PHP
插上了翅膀。下面安装swoole
扩展,其他版本的请自行 Google。
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_http
和swoole_websocket
两个配置文件。一个基本的Hello world!
测试,无需修改默认配置,我们只在项目的.env
文件中,添加SWOOLE_HTTP_HOST=0.0.0.0
和SWOOLE_HTTP_PORT=2020
即可,意思是在2020
端口启动一个http
监听程序。0.0.0.0
指任何IP都可远程访问。
// .env SWOOLE_HTTP_HOST=0.0.0.0 SWOOLE_HTTP_PORT=2020
基本配置修改完成,我们启动laravel-swoole
的http
应用:
root@Aliyun-ECS / # php artisan swoole:http start Starting swoole http server...Swoole http server started: <http://0.0.0.0:2020>
此时我们访问2020
端口,即可测试使用swoole
扩展后的应用。再看下请求的响应时间:
好家伙!直接干到15ms
以内。这里第一次时间较长,是因为开了opcache
的原因,会写入缓存。但这里的opcache
写缓存,要比Round 2
那个只开启opache
扩展要快很多,这都是swoole
的功劳。
结语
我又测试了一下,单独只启用swoole
扩展,不启用opcache
,发现响应时间和两个扩展都开启的响应时间一样。也就是说,有了swoole
后,opcache
就没用了?这个还得请各位大佬指点了。这里简单的做个对比:
通过实践对比,发现同时开启opcache
和swoole
扩展,是响应时间最快的。
其他问题
- PHP-FPM进程管理,为什么会创建master进程?不科学呀
感谢
感谢 @Hesunfly 的解答。有时在命令行中用
php -i
模式查看扩展信息,和在页面中使用phpinfo()
查看的扩展信息会有不一致的情况。这里引用下 @Hesunfly 原话:
「有的发行版确实是cli
和fpm
的配置公用的,例如 mac 使用 brew 安装的 php 就是只有一个php.ini
。 但是我在 centos 和 ubuntu 下安装的一般是区分了cli
和fpm
的。」
以上是如何让你的Laravel在15毫秒内返回一个"hello world!"的详细内容。更多信息请关注PHP中文网其他相关文章!

Laravel在后端开发中表现强大,通过EloquentORM简化数据库操作,控制器和服务类处理业务逻辑,并提供队列、事件等功能。1)EloquentORM通过模型映射数据库表,简化查询。2)业务逻辑在控制器和服务类中处理,提高模块化和可维护性。3)其他功能如队列系统帮助处理复杂需求。

选择Laravel开发项目是因为其灵活性和强大功能适应不同规模和复杂度的需求。Laravel提供路由系统、EloquentORM、Artisan命令行等功能,支持从简单博客到复杂企业级系统的开发。

Laravel和Python在开发环境和生态系统上的对比如下:1.Laravel的开发环境简单,仅需PHP和Composer,提供了丰富的扩展包如LaravelForge,但扩展包维护可能不及时。2.Python的开发环境也简单,仅需Python和pip,生态系统庞大,涵盖多个领域,但版本和依赖管理可能复杂。

Laravel是如何在后端逻辑中发挥作用的?它通过路由系统、EloquentORM、认证与授权、事件与监听器以及性能优化来简化和增强后端开发。1.路由系统允许定义URL结构和请求处理逻辑。2.EloquentORM简化数据库交互。3.认证与授权系统便于用户管理。4.事件与监听器实现松耦合代码结构。5.性能优化通过缓存和队列提高应用效率。

Laravel受欢迎的原因包括其简化开发过程、提供愉快的开发环境和丰富的功能。1)它吸收了RubyonRails的设计理念,结合PHP的灵活性。2)提供了如EloquentORM、Blade模板引擎等工具,提高开发效率。3)其MVC架构和依赖注入机制使代码更加模块化和可测试。4)提供了强大的调试工具和性能优化方法,如缓存系统和最佳实践。

Django和Laravel都是全栈框架,Django适合Python开发者和复杂业务逻辑,Laravel适合PHP开发者和优雅语法。1.Django基于Python,遵循“电池齐全”哲学,适合快速开发和高并发。2.Laravel基于PHP,强调开发者体验,适合小型到中型项目。

PHP和Laravel不是直接可比的,因为Laravel是基于PHP的框架。1.PHP适合小型项目或快速原型开发,因其简单直接。2.Laravel适合大型项目或高效开发,因其提供丰富功能和工具,但学习曲线较陡,性能可能不如纯PHP。

laravelisabackendframeworkbuiltonphp,设计ForweBapplicationDevelopment.itfocusessonserver-sideLogic,databasemagemention和Applicationstructure和CanBeintegratedWithFrontendTechnologiesLikeLikeVue.jsorreActeReacterVue.jsorreActforforfull-stackDevefloct。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

禅工作室 13.0.1
功能强大的PHP集成开发环境