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

튜토리얼 칼럼에서는 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에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Laravel In Action : 실제 응용 프로그램 및 예제Laravel In Action : 실제 응용 프로그램 및 예제Apr 16, 2025 am 12:02 AM

laravelcanbeefectically-Worldapplicationsforlybuildingscaleberquentorm.2) laravel'secosystem, Enhancesdevelopment.3) eTaddressespesperformance를 포함하여

Laravel의 주요 기능 : 백엔드 개발Laravel의 주요 기능 : 백엔드 개발Apr 15, 2025 am 12:14 AM

백엔드 개발에서 Laravel의 핵심 기능에는 라우팅 시스템, eloquentorm, 마이그레이션 기능, 캐시 시스템 및 큐 시스템이 포함됩니다. 1. 라우팅 시스템은 URL 매핑을 단순화하고 코드 구성 및 유지 보수를 향상시킵니다. 2. ELOQUENTORM은 객체 지향 데이터 작업을 제공하여 개발 효율성을 향상시킵니다. 3. 마이그레이션 함수는 버전 제어를 통해 데이터베이스 구조를 관리하여 일관성을 보장합니다. 4. 캐시 시스템은 데이터베이스 쿼리를 줄이고 응답 속도를 향상시킵니다. 5. 큐 시스템은 대규모 데이터를 효과적으로 처리하고, 사용자 요청을 차단하지 않으며, 전반적인 성능을 향상시킵니다.

Laravel의 백엔드 기능 : 데이터베이스, 논리 등Laravel의 백엔드 기능 : 데이터베이스, 논리 등Apr 14, 2025 am 12:04 AM

Laravel은 백엔드 개발에서 강력하게 수행되며 Eloquentorm, 컨트롤러 및 서비스 클래스를 통해 데이터베이스 작업을 단순화하고 대기열, 이벤트 및 기타 기능을 제공합니다. 1) Eloquentorm은 쿼리를 단순화하기 위해 모델을 통해 데이터베이스 테이블을 맵핑합니다. 2) 비즈니스 로직은 모듈성 및 유지 관리를 향상시키기 위해 컨트롤러 및 서비스 클래스에서 처리됩니다. 3) 큐 시스템과 같은 다른 기능은 복잡한 요구를 처리하는 데 도움이됩니다.

Laravel의 다양성 : 간단한 사이트에서 복잡한 시스템에 이르기까지Laravel의 다양성 : 간단한 사이트에서 복잡한 시스템에 이르기까지Apr 13, 2025 am 12:13 AM

Laravel Development Project는 다양한 크기와 복잡성의 요구에 맞게 유연성과 힘으로 인해 선정되었습니다. Laravel은 간단한 블로그에서 복잡한 엔터프라이즈 수준 시스템에 이르기까지 라우팅 시스템, Eloquentorm, Artisan Command Line 및 기타 기능을 제공합니다.

Laravel (PHP) vs. Python : 개발 환경 및 생태계Laravel (PHP) vs. Python : 개발 환경 및 생태계Apr 12, 2025 am 12:10 AM

개발 환경과 생태계에서 Laravel과 Python의 비교는 다음과 같습니다. 1. Laravel의 개발 환경은 간단하며 PHP와 작곡가 만 필요합니다. Laravelforge와 같은 풍부한 확장 패키지를 제공하지만 확장 패키지 유지 보수는시기 적절하지 않을 수 있습니다. 2. 파이썬의 개발 환경도 간단하며 파이썬과 PIP 만 필요합니다. 생태계는 거대하고 여러 분야를 다루지 만 버전 및 종속성 관리는 복잡 할 수 있습니다.

Laravel 및 백엔드 : 파워링 웹 응용 프로그램 논리Laravel 및 백엔드 : 파워링 웹 응용 프로그램 논리Apr 11, 2025 am 11:29 AM

Laravel은 백엔드 논리에서 어떻게 중요한 역할을합니까? 라우팅 시스템, eloquentorm, 인증 및 승인, 이벤트 및 청취자, 성능 최적화를 통해 백엔드 개발을 단순화하고 향상시킵니다. 1. 라우팅 시스템은 URL 구조의 정의 및 요청 처리 로직을 정의 할 수 있습니다. 2. eloquentorm은 데이터베이스 상호 작용을 단순화합니다. 3. 인증 및 인증 시스템은 사용자 관리에 편리합니다. 4. 이벤트와 리스너는 느슨하게 결합 된 코드 구조를 구현합니다. 5. 성능 최적화는 캐싱 및 대기열을 통한 응용 프로그램 효율성을 향상시킵니다.

Laravel이 왜 그렇게 인기가 있습니까?Laravel이 왜 그렇게 인기가 있습니까?Apr 02, 2025 pm 02:16 PM

Laravel의 인기에는 단순화 된 개발 프로세스, 쾌적한 개발 환경 및 풍부한 기능이 포함됩니다. 1) PHP의 유연성을 결합하여 Rubyonrails의 설계 철학을 흡수합니다. 2) 개발 효율성을 향상시키기 위해 Eloquentorm, Blade Template Engine 등과 같은 도구를 제공하십시오. 3) MVC 아키텍처 및 종속성 주입 메커니즘은 코드를보다 모듈화적이고 테스트 가능하게 만듭니다. 4) 캐싱 시스템 및 모범 사례와 같은 강력한 디버깅 도구 및 성능 최적화 방법을 제공합니다.

어느 것이 더 낫습니까, 장고 또는 라벨?어느 것이 더 낫습니까, 장고 또는 라벨?Mar 28, 2025 am 10:41 AM

Django와 Laravel은 모두 풀 스택 프레임 워크입니다. Django는 Python 개발자 및 복잡한 비즈니스 논리에 적합한 반면 Laravel은 PHP 개발자 및 우아한 구문에 적합합니다. 1. Django는 파이썬을 기반으로하며 빠른 개발 및 높은 동시성에 적합한 "배터리 완성"철학을 따릅니다. 2. Laravel은 PHP를 기반으로하며 개발자 경험을 강조하며 중소형 프로젝트에 적합합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경