> PHP 프레임워크 > Laravel > Laravel이 15밀리초 안에 'hello world!'를 반환하도록 만드는 방법

Laravel이 15밀리초 안에 'hello world!'를 반환하도록 만드는 방법

藏色散人
풀어 주다: 2021-03-26 08:59:25
앞으로
2096명이 탐색했습니다.

튜토리얼 칼럼에서는 Laravel이 15밀리초 이내에 "Hello World!"를 반환하도록 하는 방법을 소개합니다. 이것이 필요한 친구들에게 도움이 되기를 바랍니다. 우선 시작부터 실행이 끝날 때까지 프레임워크가 미치는 영향은 가장 기본적인 으로 돌아가는 것이라고 생각합니다.

추천: Hello world!字符串,是所有以Laravel为框架的项目中,最基本的一个请求过程。除此以外,项目中的任何http请求,都会带有更多的业务逻辑和数据库查询等耗时操作,且这些逻辑的执行时间都是不可控和不可对比的。也就是说,其他任何请求都不会比返回一个Hello world!字符串更短的时间了。所以,通过对比这个最基本的Hello world请求响应时间,我们可以看出,不同的优化对于Laravel최신 5개 Laravel 비디오 튜토리얼

테스트 매개변수

ParametersVersionServer 1c 프로세서, 1G 메모리, 1M 대역폭8.0PHP-FPM
PHP 버전
프로세스 관리

기본 구성 응답 시간

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

PHP를 설치한 후 기본 구성에서 Hello world!가 걸리는 것을 볼 수 있습니다. /code> 약 140ms. 다음으로 시작해 보겠습니다! 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_Laravel이 15밀리초 안에 hello world!를 반환하도록 만드는 방법_override => Off => Off
로그인 후 복사

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

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

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_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:></http:>
로그인 후 복사

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

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

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

🎜🎜1라운드: Laravel 캐시🎜🎜Laravel는 캐시 기능을 활성화하는 매우 편리한 artisan 명령을 제공하여 파일 읽기 횟수를 효과적으로 줄여줍니다. php artisan Optimize 명령에는 php artisan config:cachephp artisan Route:cache 명령이 포함되어 있지만 가 하나 더 있습니다. 파일 캐시. 다음 5개 명령을 순서대로 실행하세요. 🎜rrreee🎜응답 시간을 살펴보겠습니다. 🎜🎜Laravel이 🎜🎜 Laravel의 캐시는 가장 기본적인 요청에 뚜렷한 영향을 미치지 않는다는 것을 알 수 있습니다. 🎜🎜🎜🎜2라운드: opcache 켜기🎜🎜이번에는 속도를 높이기 위해 가장 확실한 방법을 사용하기로 결정했습니다: opcache 확장 기능을 켜기. remi 소스를 사용하여 php8를 설치했으므로 여기에 opcache 확장 프로그램을 설치하는 것이 더 쉬울 것입니다. 다른 버전을 설치하려면, 직접 구글링해 보세요. 🎜rrreee🎜설치가 완료될 때까지 기다린 후 php를 다시 시작한 다음 확장 프로그램이 설치되었는지 확인합니다. 🎜rrreee🎜ok, opcache 확장 프로그램이 활성화되었습니다. , 다시 확인하겠습니다. Hello world! 다운로드 응답 시간: 🎜🎜15밀리초 안에 Laravel이 🎜🎜OHHHHHH! 효과가 너무 뚜렷해서 갑자기 30ms 미만으로 떨어졌고, 응답 시간이 거의 5배 향상되었습니다. opcache가 캐시에 쓰기 때문에 첫 번째 요청은 더 느려집니다. 한 번 액세스하면 속도가 급격하게 높아집니다. 여기에 만족하시나요? 기사 제목을 보시면, 우리는 더욱 노력해야 합니다! 🎜🎜🎜🎜3단계: swoole 켜기🎜🎜swoole 우리 모두 알고 있듯이 모듈은 애플리케이션을 메모리에 미리 로드하므로 요청을 처리할 때 파일 읽기 및 로드 프로세스가 줄어듭니다. >PHP에는 날개가 있습니다. 다른 버전을 보려면 아래에서 swoole 확장 프로그램을 설치하세요. 🎜rrreee🎜 평소와 마찬가지로 설치 후 설치가 성공했는지 확인하세요. 🎜rrreee🎜 확장 프로그램이 활성화되었지만 아직 테스트할 수 없습니다. swoolecli 모드의 확장이므로 php-fpm을 사용할 수 없습니다. 따라서 cli 모드에서 http 애플리케이션을 구현해야 합니다. 하지만 실제로는 http 애플리케이션을 직접 직접 작성할 필요가 없습니다. 커뮤니티에는 이미 이를 작성한 유명 인사들이 있습니다. "선조가 나무를 심고, 미래 세대가 그 그늘을 즐긴다"라는 말처럼 laravel-swoole 소프트웨어 패키지를 소개하고 http 서비스를 시작합니다. 🎜rrreee🎜위의 두 단계를 수행한 후 프로젝트의 config 디렉터리에서 두 개의 구성 파일 swoole_httpswoole_websocket을 찾을 수 있습니다. 기본 구성을 수정하지 않고 기본 Hello world! 테스트를 진행합니다. 프로젝트의 .env 파일에 SWOOLE_HTTP_HOST=0.0.0.0만 추가합니다. SWOOLE_HTTP_PORT=2020, 이는 2020 포트에서 http 수신 프로그램을 시작한다는 의미입니다. 0.0.0.0은 모든 IP에 원격으로 액세스할 수 있음을 의미합니다. 🎜rrreee🎜기본 구성 수정이 완료되면 laravel-swoolehttp 애플리케이션을 시작합니다. 🎜rrreee🎜이때 2020에 액세스합니다. code> 포트, swoole 확장을 사용하여 애플리케이션을 테스트할 수 있습니다. 요청의 응답 시간을 살펴보세요: 🎜🎜Laravel을 15 미만으로 실행하세요. 밀리초 안에 를 반환하세요🎜🎜좋은 친구! 15ms 내에 바로 연결됩니다. 여기서 처음에는 opcache가 켜져 있고 캐시가 기록되기 때문에 시간이 오래 걸립니다. 하지만 여기의 opcache 쓰기 캐시는 opache 확장만 켜는 2라운드보다 훨씬 빠릅니다. 이것은 모두 swoole입니다. code>의 크레딧입니다. 🎜

결론

다시 테스트해보니 opcache를 활성화하지 않고 swoole 확장만 활성화했는데 응답 시간은 두 확장을 모두 활성화했을 때와 동일했습니다. . 즉, swoole에서는 opcache가 쓸모없다는 건가요? 이에 대해서는 선배들에게 조언을 구해야겠습니다. 다음은 간단한 비교입니다: swoole扩展,不启用opcache,发现响应时间和两个扩展都开启的响应时间一样。也就是说,有了swoole后,opcache就没用了?这个还得请各位大佬指点了。这里简单的做个对比:

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

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

其他问题

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

感谢

感谢 @Hesunfly 的解答。有时在命令行中用php -i模式查看扩展信息,和在页面中使用phpinfo()查看的扩展信息会有不一致的情况。这里引用下 @Hesunfly 原话:
「有的发行版确实是 clifpm 的配置公用的,例如 mac 使用 brew 安装的 php 就是只有一个 php.ini。 但是我在 centos 和 ubuntu 下安装的一般是区分了clifpmLaravel을 15밀리초 안에 실행하십시오. a
Laravel이 15밀리초 안에 hello world!를 반환하도록 만드는 방법실질적인 비교를 통해 opcacheswoole 확장을 동시에 활성화하면 응답 시간이 가장 빠른 것으로 나타났습니다.

🎜🎜기타 질문🎜
  • PHP-FPM 프로세스 관리, 마스터 프로세스는 왜 생성되나요? 비과학적인
🎜🎜🎜감사합니다🎜
🎜답변에 감사드립니다@Hesunfly🎜. 명령줄에서 php -i 모드를 사용하여 본 확장 정보가 페이지에서 phpinfo()를 사용하여 본 확장 정보와 일치하지 않는 경우가 있습니다. 다음은 @Hesunfly🎜의 인용문입니다. 🎜"일부 배포판은 clifpm의 구성을 공유합니다. 예를 들어, Mac에서는 Brew를 사용합니다. 설치하려면 PHP에는 php.ini가 하나만 있습니다. 그러나 centos와 ubuntu에 설치하는 것들은 일반적으로 clifpm을 구별합니다. "🎜 🎜🎜🎜🎜

위 내용은 Laravel이 15밀리초 안에 'hello world!'를 반환하도록 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿