搜尋
首頁php框架Laravel如何讓你的Laravel在15毫秒內返回一個'hello world!'

下面由laravel教學專欄給大家介紹如何讓你的Laravel在15毫秒內返回一個"hello world!",希望對需要的朋友有所幫助!

首先,我認為透過傳回最基本的Hello world!字串,是所有以Laravel為框架的專案中,最基本的一個請求過程。除此之外,專案中的任何http請求,都會帶有更多的業務邏輯和資料庫查詢等耗時操作,且這些邏輯的執行時間都是不可控且不可對比的。也就是說,其他任何請求都不會比回傳一個Hello world!字串更短的時間了。所以,透過比較這個最基本的Hello world請求回應時間,我們可以看出,不同的最佳化對於Laravel框架從啟動到執行結束的影響。

推薦:最新的五個Laravel影片教學

#測試參數

##

預設配置回應時間

让你的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_如何讓你的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的功勞。

結語

我又測試了一下,單獨只啟用swoole擴展,不啟用opcache,發現回應時間和兩個擴充都開啟的回應時間一樣。也就是說,有了swoole後,opcache就沒用了?這個還得請各位大佬指點了。這裡簡單的做個對比:

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

透過實作對比,發現同時開啟opcacheswoole擴展,是回應時間最快的。

其他問題

  • PHP-FPM進程管理,為什麼會建立master進程?不科學呀

感謝

感謝 @Hesunfly 的解答。有時在命令列中以php -i模式查看擴充訊息,和在頁面中使用phpinfo()檢視的擴充資訊會有不一致的情況。這裡引用下@Hesunfly 原話:
「有的發行版確實是clifpm 的設定公用的,例如mac 使用brew 安裝的php 就是只有一個php.ini。但我在centos 和ubuntu 下安裝的一般是區分了clifpm 的。」
如何讓你的Laravel在15毫秒內返回一個hello world!

#參數 版本
#伺服器 1c處理器,1G內存,1M頻寬
PHP版本 8.0
#程式管理 PHP-FPM

以上是如何讓你的Laravel在15毫秒內返回一個'hello world!'的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
Laravel的多功能性:從簡單站點到復雜系統Laravel的多功能性:從簡單站點到復雜系統Apr 13, 2025 am 12:13 AM

選擇Laravel開發項目是因為其靈活性和強大功能適應不同規模和復雜度的需求。 Laravel提供路由系統、EloquentORM、Artisan命令行等功能,支持從簡單博客到復雜企業級系統的開發。

Laravel(PHP)與Python:開發環境和生態系統Laravel(PHP)與Python:開發環境和生態系統Apr 12, 2025 am 12:10 AM

Laravel和Python在開發環境和生態系統上的對比如下:1.Laravel的開發環境簡單,僅需PHP和Composer,提供了豐富的擴展包如LaravelForge,但擴展包維護可能不及時。 2.Python的開發環境也簡單,僅需Python和pip,生態系統龐大,涵蓋多個領域,但版本和依賴管理可能複雜。

Laravel和後端:為Web應用程序提供動力邏輯Laravel和後端:為Web應用程序提供動力邏輯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)它吸收了RubyonRails的設計理念,結合PHP的靈活性。 2)提供瞭如EloquentORM、Blade模板引擎等工具,提高開發效率。 3)其MVC架構和依賴注入機制使代碼更加模塊化和可測試。 4)提供了強大的調試工具和性能優化方法,如緩存系統和最佳實踐。

django或laravel哪個更好?django或laravel哪個更好?Mar 28, 2025 am 10:41 AM

Django和Laravel都是全棧框架,Django適合Python開發者和復雜業務邏輯,Laravel適合PHP開發者和優雅語法。 1.Django基於Python,遵循“電池齊全”哲學,適合快速開發和高並發。 2.Laravel基於PHP,強調開發者體驗,適合小型到中型項目。

哪個是更好的PHP或Laravel?哪個是更好的PHP或Laravel?Mar 27, 2025 pm 05:31 PM

PHP和Laravel不是直接可比的,因為Laravel是基於PHP的框架。 1.PHP適合小型項目或快速原型開發,因其簡單直接。 2.Laravel適合大型項目或高效開發,因其提供豐富功能和工具,但學習曲線較陡,性能可能不如純PHP。

Laravel是前端還是後端?Laravel是前端還是後端?Mar 27, 2025 pm 05:31 PM

laravelisabackendframeworkbuiltonphp,設計ForweBapplicationDevelopment.itfocusessonserver-sideLogic,databasemagemention和Applicationstructure和CanBeintegratedWithFrontendTechnologiesLikeLikeVue.jsorreActeReacterVue.jsorreActforforfull-stackDevefloct。

如何在Laravel中創建和使用自定義刀片指令?如何在Laravel中創建和使用自定義刀片指令?Mar 17, 2025 pm 02:50 PM

本文討論了Laravel中的創建和使用自定義刀片指令以增強模板。它涵蓋了定義指令,在模板中使用它們,並在大型項目中管理它們,強調了改進的代碼可重複性和R等好處

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具