當前位置:
首頁 > 最新 > 通過 PHP OPcache 讓你的 Laravel 應用運行速度飛起來

通過 PHP OPcache 讓你的 Laravel 應用運行速度飛起來

什麼是 Opcache

每一次執行 PHP 腳本的時候,該腳本都需要被編譯成位元組碼,而 OPcache 可以對該位元組碼進行緩存,這樣,下次請求同一個腳本的時候,該腳本就不需要重新編譯,這極大節省了腳本的執行時間,從而讓應用運行速度更快,同時也節省了伺服器的開銷。

用數字說話

我們當然很想知道到底進行了怎樣的優化,儘管性能提升高度依賴於應用和伺服器的配置,不過我們可以通過運行基準測試(benchmark)有一個大概的了解。

為此我專門準備了一個很低配置的機器:1核CPU,1G內存來運行 Apache 基準測試。我請求的是 Laravel 5.4 默認的歡迎頁面,讓 10 個並發請求持續訪問 1 分鐘,以下是關閉 OPcache 的基準測試結果:

對於一個這麼低配置的伺服器而言,這也不算太壞,但是我們可以做得更好。開啟 OPcache 的基準測試結果如下(使用默認 OPcache 配置):

差距還是很大的!我們接下來對 OPcache 配置進行優化,基準測試的表現效果更好:

這把服了沒有?

聽起來很牛逼,不過怎麼使用呢

首先,我們需要確保在伺服器上安裝了 OPcache,從 PHP 5.5 開始,OPcache 已經成為 PHP 核心的一部分,所以對於 Laravel 開發者而言,基本上不需要手動去安裝這個擴展。

當然,如果不放心,可以通過查看 進行確認:

該腳本會顯示所有 PHP 安裝的擴展。在頁面搜索 「OPcache」,如果找到,證明已經安裝。如果沒有,則需要自己去安裝。

接下來,我們需要在 PHP 的配置文件中啟用 OPcache(默認是關閉的):

下面我們繼續對 OPcache 進行一些優化配置:

這個配置表示你想要分配給 OPcache 的內存空間(單位:MB),設置一個大於 64 的值即可。

這個配置表示你想要分配給實際字元串的空間(單位:MB),設置一個大於 16 的值即可。

這個配置表示可以緩存多少個腳本,將這個值儘可能設置為與項目包含的腳本數接近(或更大)。

改配置值用於重新驗證腳本,如果設置為 0(性能最佳),需要手動在每次 PHP 代碼更改後手動清除 OPcache。如果你不想要手動清除,可以將其設置為 1 並通過 配置重新驗證間隔,這可能會消耗一些性能,因為需要每隔 x 秒檢查更改。

這個配置會在腳本中保留注釋,我推薦開啟該選項,因為一些庫依賴於這個配置,並且我也找不出什麼關閉它的好處。

快速關閉會給一個更快速清理內存的機制,不過,在我的基準測試中,更慢一些,可能這會應用帶來一些性能提升,但是你需要自己去嘗試。

所以,最終的配置優化長這樣:

你可以使用這些配置值進行實驗,具體配置值取決於你的應用大小和伺服器配置。

最後,保存這個配置文件並重啟 Web 伺服器,你的應用肯定會變得更快。

準備好 Laravel 應用

前面提到, 設置為 的話我們需要在每次修改 PHP 代碼後手動清除 OPcache。為此我創建了一個擴展包來提供相應的 Artisan 命令處理 OPcache 清理事宜:https://github.com/appstract/laravel-opcache。

安裝完擴展後,只需執行如下命令即可清理 OPcache:

此外,改擴展包還提供了一些其他有用的工具,你可以在項目的 GitHub頁面 上看到。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PHP技術大全 的精彩文章:

RED_HAWK:基於PHP實現的信息收集與SQL注入漏洞掃描工具
如何在海外伺服器上搭建無需域名認證的個人網站

TAG:PHP技術大全 |

您可能感興趣

IHS Markit:蘋果或推出可摺疊iPad,運行iPad OS
你現在可以在OnePlus X和OnePlus 2上運行Android 9 Pie
Chrome OS再進一步:已可運行Linux應用
怎樣在 Kubernetes 上運行 PostgreSQL
Oculus Avatars APP可跨平台運行
在Kubernetes上運行高可用的WordPress和MySQL
三代iPhone Plus運行iOS誰更快
Google 的 Fuchsia OS 將能運行 Android 應用
Google推出AI晶元Edge TPU,可在邊緣運行TensorFlow Lite機器學習模型
在 Kubernetes 上運行一個 Python 應用程序
運行Android Pie的Nokia 3.1Plus現身Geekbench 或即將得到更新
允許多個應用同時運行 Magic Leap最新版SDK增加Runtime
Lumia移植Windows RT迎突破進展:可運行Store應用
Pixel 3a/XL現身Google Play:運行Android 9 Pie
Surface Phone蹤跡再現:運行Andromeda系統
Darling能夠Linux上運行macOS軟體
如何讓您的舊iPhone儘可能長時間運行-使用SparkleComm的IOS用戶注意啦
三星Gear S4或將被稱為Galaxy Watch,還會運行Watch OS?
Cellebrite說它現在可以解鎖運行iOS 11的設備,包括iPhone X
谷歌新系統Fuchsia OS將能運行Android應用 為 Fuchsia 建構 ART