首頁 > 後端開發 > php教程 > 了解opcache

了解opcache

尊渡假赌尊渡假赌尊渡假赌
發布: 2025-02-20 08:38:10
原創
855 人瀏覽過

了解opcache

鑰匙要點

    OPCACHE是PHP 5.5中的內置緩存引擎,該引擎將預編碼腳本字節碼存儲在內存中,從而導致PHP應用程序中的性能提升。它可以作為較舊的PHP版本上的擴展名安裝,並且可以將網站的平均響應時間縮短多達14%。
  • opcache是​​比APC緩存更好的解決方案,因為APC不支持較新的PHP版本,並且可能導致執行錯誤。 OPCACHE與PHP本身更緊密地綁定,從而導致更頻繁的更新和更少的錯誤。但是,與APC不同,OPCACHE不能用作數據緩存引擎。
  • 要檢查OPCACHE是否正常運行,可以使用opcache_get_configuration()和opcache_get_status()functions。還有幾個準備好的腳本可獲取所有opcache配置和狀態數據,並以用戶友好的方式顯示。
  • >可以在一個項目中啟用OPCACHE並在單個服務器上的另一個項目中禁用。這是通過在全球級別啟用OPCACHE,然後使用ini_set()函數在特定項目中禁用的OPCACHE來實現
  • 版本5.5中的 php帶有內置的緩存引擎 - OPCACHE - 將預編譯的腳本字節碼存儲在內存中。如果您熟悉APC或XCache,您將已經知道此類引擎的工作原理。當每個PHP腳本在運行時編譯時,執行時間的一部分被用於將人類可讀代碼轉換為機器可以理解的代碼。在第一次執行特定的PHP文件期間,像OPCACHE,APC或XCACHE這樣的字節碼緩存引擎僅執行一次。然後將預編譯的腳本存儲在內存中,這將導致PHP應用程序中的性能提高。
  • 在網絡上,您會很容易地找到許多涵蓋所有OPCACHE安裝和配置步驟的教程(默認情況下是在5.5上啟用,但可以作為較舊版本的擴展名安裝)。閱讀下面的文章,以找到有關使用此特定緩存引擎的不同實踐方面的一些典型問題的答案。
  • >
  • 1。 Opcache是​​否值得安裝?我可以期待什麼速度提升? 當然,這取決於。如果您的服務器設法處理傳入的流量並保持較低的響應時間,則您可能不會感到需要進行性能。但是,在一個較大的網站上,每個小優化步驟都有很多流量。實施OPCACHE可以使您每秒處理更多的請求,並比沒有字節碼緩存引擎更快地返迴響應。由於Opcache非常易於安裝和配置,因此您不會花費太多時間來設置所有內容。
  • 如果您正在尋找一些OPCACHE性能測試,則當然應該閱讀有關實現此緩存引擎的AppDynamics文章。在他們的測試中,OPCACHE的安裝使網站的平均響應時間減少了14%。 Web應用程序不同動作的響應時間的減少從6%到74%不等。如文章中所述,不同的代碼零件可能會或多或少地從實施字節碼緩存引擎中受益。我鼓勵您詳細閱讀文章,並檢查您可以在哪裡獲得最高的性能提升。

    如果您正在尋找有關Opcache性能的其他資源,請在Fideloper.com和MassiveCale.com上查看示例。兩項測試均報告安裝OPCACHE後的響應時間減少了約50%。

    >

    2。我已經使用了APC緩存。我應該遷移到opcache嗎?

    我認為你應該。有幾個優點可以使Opcache成為更好的解決方案。

    首先,APC緩存無法與最新的PHP版本一起使用。它根本不支持PHP 5.5。不建議將其安裝在PHP 5.4上,因為據報導,這種配置可能會導致破壞整個應用程序的執行錯誤。只需查看有關PHP加速器或此堆棧溢出線程的Wikipedia文章即可獲取一些詳細信息。 但是,Opcache與PHP 5.5捆綁在一起,因此它肯定可以與此PHP版本一起使用。如文檔中所寫,還可以使用較舊的PHP版本(從5.2到5.4)安裝。通常,OPCACHE比其他字節碼緩存引擎更與PHP本身綁定,這可能會導致更新更新和更少的錯誤(有關詳細信息,請閱讀此處)。

    >

    >從APC遷移到OPCACHE的唯一重要的事情是,後者無法用作數據緩存引擎。如果您已經實現了APC,則可能使用其APC_ADD()和APC_Fetch()函數,這些功能是數據緩存服務的接口。 Opcache只是一個字節碼緩存引擎,因此不會提供類似的功能。如果您打算從APC切換到OPCACHE,請記住考慮此限制。請記住,如果您想保持APC Userland功能,則有一個APCU項目(非常感謝Oscar Merina在評論中指出)。

    3。如何檢查opcache是​​否實際上是在緩存我的文件?

    如果您已經安裝和配置了OPCACHE,則可能會發現控制哪些PHP文件實際上是在緩存的重要性。整個緩存引擎在後台工作,對訪問者或Web開發人員透明。為了檢查其狀態,您可以使用提供此類信息的兩個功能之一:opcache_get_configuration()和opcache_get_status()。幸運的是,有幾個準備好的腳本,可以獲取所有Opcache配置和狀態數據,並以友好的方式顯示。您無需獨自編寫任何代碼,只需從下面選擇一種工具:
    > - opcache控制面板,
    - rasmus lerdorf的Opcache-STATUS,
    - Pieter Hordijk的Opcachegui,
    - 安德魯·科靈頓(Andrew Collington)的opcache-gui。

    在我的項目中,我使用具有我需要的所有功能的OPCACHE-GUI腳本。要檢查緩存引擎是否正常工作,只需查看OPCACHE-GUI頁面上的“概述”選項卡的百分比。如果內存使用率和命中率值大於零,則意味著OPCACHE正在緩存PHP代碼,並且正在使用緩存的文件來處理請求。要查看正在緩存的特定PHP文件的列表,只需導航到選項卡“文件使用”。查看文件列表,以確保您的項目中的文件被緩存。

    了解opcache

    4。我應該設置任何特定於框架的配置嗎? 基本上,Opcache引擎應作為代碼作者透明。這意味著您可以將所需的任何代碼放入應用程序中(與所使用的PHP版本一起使用),並且OPCACHE應該正確處理。但是,只有以正確的方式設置OPCACHE配置時,它才能起作用。錯誤的緩存引擎配置可能會破壞您的整個網站。

    首先,可能在每個典型項目中,您必須確保將OPCACHE.USE_CWD選項設置為true。啟用此設置意味著Opcache引擎將查看完整的文件路徑,以區分具有相同名稱的文件。將其設置為false將導致具有相同基本名稱的文件之間的碰撞。

    >在使用註釋的工具和框架中,還有一個重要的設置。如果使用學說,請記住將opcache.comments和opcache.save_comments設置設置為true。因此,您的文件中的文檔註釋也將包含在OPCACHE生成的預編碼代碼中。此設置將使您可以在沒有任何干擾的情況下處理註釋。

    >

    如果您的項目基於特定框架或Web應用程序,則最好檢查文檔中有關OPCACHE配置的任何指南。例如,這裡有Moodle的示例配置。

    5。我將應用程序配置保存在PHP文件中。我可以防止它被緩存嗎?

    >

    如果您的項目包含的文件比其他文件更頻繁地更改,則可以將其排除在緩存之外。處理包含您網站配置指令的PHP文件時,它可能特別方便。如果您阻止它們被緩存,則可以確保立即在您的應用程序中看到此文件中的每個更改。

    opcache允許您指定包含緩存引擎不會處理的所有路徑的黑名單文件。設置opcache.blacklist_filename指令後,只需將正確的文件列表放入您指定的路徑中即可。文檔頁麵包含一些有關如何將特定文件從緩存中排除的示例。

    >

    6。如何在啟用OPCACHE的單個服務器上同時運行開發環境和生產環境?

    >如果您的服務器運行了多個應用程序,則可能只願意在其中一些應用程序中使用OPCACHE。開發和測試站點是此類環境的示例,在這種環境中,具有字節碼啟用的字節碼不可行,並且可能造成的弊大於利。

    幸運的是,可以在一個項目中啟用OPCACHE並在單個服務器上禁用。為此,首先,您需要通過設置OPCACHE.SHABLE指令為php.ini文件中的true來啟用全局級別的OPCACHE。然後,如果您不想在其中一個項目中使用字節碼緩存,只需通過使用Ini_set()函數將相同的指令設置為false來禁用它。因此,首先,您需要在全球範圍內啟用緩存,然後可以在某些項目“本地”中將其禁用。您不能做相反的事情 - 不允許使用ini_set()啟用緩存。

    >設置opcache。可在項目中的頂部文件中可為false設置,將禁用緩存,同時將其保存在其他地方。

    摘要

    我希望這套常見的問題和答案為您提供了一些有關如何在PHP應用程序中使用Opcache的實用信息。如果您對該主題還有其他疑問或評論,請隨時在下面發布它們。您也可以通過Google Plus與我聯繫。

    經常詢問有關opcache

    的問題

    > php?

    opcache中OPCACHE的主要功能是一個強大的PHP擴展程序,可以通過將預編譯的腳本字節碼存儲在共享內存中來改善PHP性能。這消除了PHP在每個請求上加載和解析腳本的需求,從而減少了執行時間和內存使用情況。它對流量高或複雜應用程序的網站特別有益,因為它可以顯著加快加載時間並增強整體性能。

    >

    > OPCACHE與其他Caching機制有何不同?存儲PHP腳本輸出的緩存機制,OPCACHE存儲了PHP腳本的預編碼。這意味著每次提出請求時都不必重新編譯PHP代碼,從而節省了很多處理時間和資源。這使OPCACHE成為改善PHP性能的更有效的解決方案。

    >

    >如何在我的PHP配置中啟用Opcache?

    啟用Opcache,您需要修改php.ini文件。查找標有[opcache]的部分,然後更改opcache的值。進行更改後,保存文件並重新啟動您的Web服務器以進行更改以生效。

    >如何檢查OPCACHE是否正常工作?

    >

    您可以通過使用php中的opcache_get_status()函數。此功能返回有關OPCACHE狀態的一系列信息,包括配置設置,內存使用率和命中率。您可以使用此信息來驗證OPCACHE是否正常工作。 php。此功能將清除OPCACHE並強迫PHP在下一個請求中重新編譯腳本。但是,請記住,經常清除opcache可能會對性能產生負面影響,因為它破壞了緩存的目的。

    >

    > opcache有任何潛在的問題或限制?提高PHP的性能,並非沒有潛在的問題或局限性。例如,它可能會引起基於文件的會話或基於文件的用戶數據存儲的問題,因為除非文件時間戳更改,否則不會重新編譯腳本。另外,對於流量低或簡單應用程序的網站可能不那麼有效,因為性能增長可能並不明顯。

    >如何優化OPCACHE配置以獲得最大性能?

    >有幾種配置指令您可以調整它們以優化OPCACHE性能。例如,您可以增加opcache.memory_compumption,以分配更多內存以存儲預編譯字節碼。您還可以調整opcache.revalidate_freq來控制腳本更改的opcache多久檢查一次。

    opcache與所有PHP版本都兼容?

    opcache與php 5.2及更高版本兼容。但是,默認情況下為5.5 php。對於早期版本,您需要將其安裝為PECL擴展。

    >我可以將OPCACHE與其他Caching機制一起使用?

    是的,您可以將OPCACHE與其他caching機制結合使用,例如Memcached或Memcached或Redis。雖然Opcache通過緩存預編譯字節碼來改善PHP性能,但其他緩存機制可以通過緩存數據庫查詢或PHP腳本的輸出來進一步提高性能。

    >

    opcache適合所有類型的網站或應用程序? >

以上是了解opcache的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板