搜尋
首頁開發工具composer分享composer autoload自動載入效能優化指南

下面由composer教學專欄為大家介紹 composer autoload 自動載入效能最佳化指南,希望對需要的朋友有幫助!

分享composer autoload自動載入效能優化指南

composer 提供的 autoload 機制使得我們組織程式碼和引入新類別庫非常方便,但是也使專案的效能下降了不少 。

composer autoload 慢的主要原因在於來自對PSR-0 和PSR-4 的支持,載入器得到一個類別名稱時需要到檔案系統裡尋找對應的類別檔案位置,這導致了很大的效能損耗,當然這在我們開發時還是有用的,這樣我們新增的新的類別檔案就能即時生效。但是在生產模式下,我們想要最快的找到這些類文件,並載入他們。

因此 composer 提供了幾種最佳化策略,以下說明下這些最佳化策略。

第一層級(Level-1)最佳化: 產生classmap

#如何運作:

##執行指令

composer dump-autoload -o(-o 等同於--optimize)

原理:##這個指令的本質是將PSR-4/PSR- 0 的規則轉換為了classmap 的規則, 因為classmap 中包含了所有類別名稱與類別檔案路徑的對應關係,所以載入器不再需要到檔案系統中尋找檔案了。可以從 classmap 直接找到類別檔案的路徑。

注意事項

建議開啟 opcache , 這樣會極大的加速類別的載入。

php5.5 以後的版本預設自帶了 opcache 。

這個指令並沒有考慮到當在classmap 中找不到目標類別時的情況,當載入器找不到目標類別時,仍舊會根據PSR-4/PSR-0 的規則去檔案系統中查找

第二層級(Level-2/A)最佳化:權威的(Authoritative)classmap

執行指令:

執行指令

composer dump-autoload -a

(-a 等同於--classmap-authoritative)##原理

執行這個指令隱包含的也執行了Level-1 的指令, 也就是同樣也是產生了classmap,差別在於當載入器在classmap 中找不到目標類別時,就不會再去檔案系統中尋找(即隱含的認為classmap 中就是所有合法的類,不會有其他的類了,除非法調用)

注意事項

#如果你的項目在運行時會生成類,使用這個優化策略會找不到這些新產生的類別。

第二層級(Level-2/B)最佳化:使用APCu cache

執行指令:

執行指令composer dump-autoload --apcu

原理:

使用這個策略需要安裝apcu 擴充功能。

apcu 可以理解為一塊內存,並且可以在多進程中共享。

這個策略是為了在Level-1 中classmap 中找不到目標類別時,將在檔案系統中找到的結果儲存到共享記憶體中, 當下次再尋找時就可以從記憶體中直接返回,不用再去檔案系統中再次查找。

在生產環境下,這個策略一般也會與Level-1 一起使用, 執行composer dump-autoload -o --apcu, 這樣,即使生產環境下生成了新的類,只需要文件系統中查找一次即可被緩存, 彌補了Level-2/A 的缺陷。

如何選擇最佳化策略?

要根據自己專案的實際情況來選擇策略,如果你的專案在運行時不會產生類別檔案並且需要composer 的autoload 去加載,那麼使用Level-2/A 即可,否則使用Level-1 及Level-2/B是比較好的選擇。

幾個提示

Level-2的最佳化基本上都是Level-1 優化的補充,Level-2/A 主要是決定在classmap 中找不到目標類別時是否繼續找下去的問題,Level-2/B 主要是在提供了一個快取機制,將在classmap 中找不到時,將從檔案系統中找到的檔案路徑快取起來,加速後續查找的速度。
  • 在執行了 Level-2/A 時,表示在 classmap 中找不到不會繼續找,此時 Level-2/B 是不會生效的。
  • 不論那種情況都建議要開啟 opcache, 這會極大的提高類別的載入速度,我目測有效能提升至少 10倍。
  • #

以上是分享composer autoload自動載入效能優化指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:dahouduan。如有侵權,請聯絡admin@php.cn刪除
作曲家:構建強大PHP應用程序的關鍵作曲家:構建強大PHP應用程序的關鍵Apr 12, 2025 am 12:05 AM

Composer是構建健壯PHP應用的關鍵工具,因為它簡化了依賴管理,提升了開發效率和代碼質量。 1)Composer通過composer.json文件定義項目依賴,並自動下載和管理這些依賴。 2)它生成composer.lock文件確保依賴版本一致,並通過vendor/autoload.php實現自動加載。 3)使用示例包括基本用法如添加日誌庫,以及高級用法如版本約束和環境變量管理。 4)常見錯誤調試技巧包括處理依賴衝突和網絡問題。 5)性能優化建議包括使用composer.lock文件和優化自動加載。

作曲家專業知識:是什麼使某人熟練作曲家專業知識:是什麼使某人熟練Apr 11, 2025 pm 12:41 PM

要在使用Composer時變得熟練,需要掌握以下技能:1.熟練使用composer.json和composer.lock文件,2.理解Composer的工作原理,3.掌握Composer的命令行工具,4.了解基本和高級用法,5.熟悉常見錯誤與調試技巧,6.優化使用和遵循最佳實踐。

作曲家在做什麼?作曲家在做什麼?Apr 08, 2025 am 12:19 AM

Composer是PHP的依賴管理工具,用於聲明、下載和管理項目依賴。 1)通過composer.json文件聲明依賴,2)使用composerinstall命令安裝依賴,3)解析依賴樹並從Packagist下載,4)生成autoload.php文件簡化自動加載,5)優化使用包括使用composerupdate--prefer-dist和調整autoload配置。

什麼是應用作曲家?什麼是應用作曲家?Apr 07, 2025 am 12:07 AM

AppComposer是一種用於構建和管理應用程序的工具。 1)它通過拖拽和配置預定義組件簡化應用開發,提高效率。 2)開發者可以定義組件、組合界面、定義業務邏輯,並最終渲染應用。 3)支持基本和高級用法,如任務管理和條件渲染,幫助構建靈活的應用。

作曲家是用什麼?作曲家是用什麼?Apr 06, 2025 am 12:02 AM

Composer是PHP的依賴管理工具。使用Composer的核心步驟包括:1)在composer.json中聲明依賴,如"stripe/stripe-php":"^7.0";2)運行composerinstall下載並配置依賴;3)通過composer.lock和autoload.php管理版本和自動加載。 Composer簡化了依賴管理,提升了項目效率和可維護性。

什麼是作曲家AI?什麼是作曲家AI?Apr 05, 2025 am 12:13 AM

ComposerAI是一個基於人工智能的工具,用於生成和優化代碼,提高開發效率和質量。其功能包括:1.代碼生成:根據需求生成符合標準的代碼片段。 2.代碼優化:通過分析現有代碼,提出優化建議。 3.自動化測試:生成測試用例,確保代碼質量。

什麼是Android中的作曲家?什麼是Android中的作曲家?Apr 04, 2025 am 12:18 AM

Composer在Android中是SurfaceFlinger服務的一部分,負責將多個圖形層合成到最終顯示緩衝區。 1)收集圖形層,2)排序圖形層,3)合成圖形層,4)輸出到顯示設備,提升應用性能和用戶體驗。

作曲家的定義是什麼?作曲家的定義是什麼?Apr 03, 2025 am 12:17 AM

作曲家是創作音樂的人,他們通過音樂表達情感、講述故事、傳達思想。作曲家的工作包括:1.構思:確定作品的主題和風格;2.創作:編寫旋律和和聲,形成初步的樂曲結構;3.試驗:通過樂器或軟件試奏和調整作品;4.完善:根據試奏結果進行修改和完善,直到滿意為止。

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尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Safe Exam Browser

Safe Exam Browser

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