搜尋

了解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
在Laravel中使用Flash會話數據在Laravel中使用Flash會話數據Mar 12, 2025 pm 05:08 PM

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

php中的捲曲:如何在REST API中使用PHP捲曲擴展php中的捲曲:如何在REST API中使用PHP捲曲擴展Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

簡化的HTTP響應在Laravel測試中模擬了簡化的HTTP響應在Laravel測試中模擬了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12個最佳PHP聊天腳本在Codecanyon上的12個最佳PHP聊天腳本Mar 13, 2025 pm 12:08 PM

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

解釋PHP中晚期靜態結合的概念。解釋PHP中晚期靜態結合的概念。Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

PHP記錄:PHP日誌分析的最佳實踐PHP記錄:PHP日誌分析的最佳實踐Mar 10, 2025 pm 02:32 PM

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

如何註冊和使用Laravel服務提供商如何註冊和使用Laravel服務提供商Mar 07, 2025 am 01:18 AM

Laravel的服務容器和服務提供商是其架構的基礎。 本文探討了服務容器,詳細信息服務提供商創建,註冊,並通過示例演示了實際用法。 我們將從OVE開始

自定義/擴展框架:如何添加自定義功能。自定義/擴展框架:如何添加自定義功能。Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

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.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。