中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用OPCache提升PHP的性能

發布時間:2021-05-08 10:14:04 來源:億速云 閱讀:163 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關怎么使用OPCache提升PHP的性能的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

PHP開發環境搭建工具有哪些

一、phpStudy,是一個新手入門最常用的開發環境。二、WampServer,WampServer也同樣的也是和phpStudy一樣操作簡單對小白比較友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的建站集成軟件包;四、MAMP,MAMP分為兩種MAMP和MAMP Pro for Mac。五、寶塔面板,寶塔面板是一款服務器管理軟件,支持windows和linux系統。六、UPUPW,UPUPW是目前Windows平臺下最具特色的Web服務器PHP套件。

什么是 OPcache

OPcache 通過將 PHP 腳本預編譯的字節碼存儲到共享內存中來提升 PHP 的性能, 存儲預編譯字節碼的好處就是 省去了每次加載和解析 PHP 腳本的開銷。

這是 PHP 文檔中關于 OPcache 的簡介,也就是說,OPcache 節約了每次加載和解析的步驟,將第一次解析編譯后的腳本字節碼緩存到系統的共享內存中。其實,這就類似于一個不完全的編譯。

類似于 Java 之類的語言,都是要打包編譯之后才能上線運行的,比如打包成一個 jar包 。C++ 或 C# 可以打包成一個 .dll 或 .exe 。這些打包之后的文件就是編譯完成的文件,將它們運行起來后一般會一直保持運行狀態,也就是會成為一個常駐進程,它們的代碼就進入內存中了。在程序運行的時候,不需要再進行解釋或編譯,自然速度就要快很多。而 OPcache 也是起到類似的作用。只不過它并不是完全的一套編譯流程,我們還是依賴的 PHP-FPM 來運行腳本,只不過在開啟 OPcache 后,PHP-FPM 會先從內存中查找是否已經有相關的已經緩存的字節碼在內存中了,如果有的話就直接取用,如果沒有的話,會再次進行解釋編譯后緩存下來。另外,OPcache 是針對文件的,也就是說,一個文件如果是新增加進來的,只有運行過它才會緩存,如果沒有運行過,它并不在當前的共享內存中。

推薦學習:《PHP視頻教程》

安裝 Opcache

OPcache 已經是 PHP 的官方擴展并隨安裝包一起發布了,所以,我們可以在編譯安裝 PHP 時使用 --enable-opcache 來開啟擴展,它已經是默認擴展。也可以在未安裝 OPcache 的系統中使用安裝包中的文件來進行安裝。

cd php-7.4.4/ext/opcache/
phpize
./configure
make && make install

需要注意的是, OPcache 和 Xdebug 在生產環境中盡量不要一起使用。本身 Xdebug 就是不推薦在生產環境中使用的,如果一定需要同時使用的話,需要先加載 OPcache ,然后再加載 Xdebug 。

擴展安裝后,在 php.ini 文件中打開擴展。需要注意的是,OPcache 擴展是 Zend 擴展包,所以我們需要打開的是 Zend 擴展。

zend_extension=opcache.so

另外,還需要啟用它。

opcache.enable=1

當開啟了 OPcache 之后,我們再更新代碼將會發現剛剛更新的代碼不是我們最新的代碼。這是因為代碼已經被緩存了,就像 Java 一樣,我們需要重啟服務才行。那么 PHP 這邊重啟的是什么呢?當然就是重啟下我們的 PHP-FPM 就可以了,直接使用 kill -USR2 命令去重啟主進程就行了。這里也給出一個快速重啟的命令。

ps -ef | grep "php-fpm: master" | grep -v grep | cut -c 9-15 | xargs kill -USR2

感謝知乎大佬的指正,重啟 PHP-FPM 不是最佳方案,應該使用 opcache_reset() 手動重啟,或者通過 php.ini 文件的配置 opcache.validate_timestamps + opcache.revalidate_freq 自動間隔編譯,或者通過 opcache_compile_file() 來直接重新編譯修改過的文件

ab 測試效果

我們進行測試的內容是測試環境的一臺2核4G的服務器,使用的 PHP 版本是 PHP7.4 ,正常的 Nginx 及 PHP 配置, ulimit 也都開到了最大。代碼只是簡單的輸出了一行文字,不過我們使用的是一個簡單的 mvc 框架 ,也就是說這段代碼運行起來至少也會加載幾個文件,而不是簡簡單單的一個文件。

首先我們來看未開啟 OPcache 的情況。

怎么使用OPCache提升PHP的性能

接下來是開啟了 OPcache 的情況。

怎么使用OPCache提升PHP的性能

很明顯,性能有了很大的提高。不僅速度快了很多,吞吐率也是直接上升了幾倍。當然,這只是非常簡單的一個測試,不過總體看來,確實對單機的性能提升有很大的幫助。最最主要的是,同樣的并發情況下,CPU 資源也比未開啟的狀態下低了70%。

配置參考

在 PHP 的官方文檔中,已經為我們給出了一套默認的 OPcache 在 php.ini 中的配置。經過測試,基本沒什么問題,當然,現在還沒有在生產環境中使用過,還需要進行更多的測試。不過文檔中指出,這套配置是可以直接運用到線上的,不過需要注意的是某些使用了注解之類功能的高級框架可能需要注意某些參數。

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

感謝各位的閱讀!關于“怎么使用OPCache提升PHP的性能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

保靖县| 贵定县| 松桃| 大城县| 普格县| 壤塘县| 安顺市| 陆丰市| 潍坊市| 达拉特旗| 甘肃省| 莎车县| 个旧市| 小金县| 牙克石市| 五华县| 峨边| 乌拉特中旗| 仲巴县| 弋阳县| 盐边县| 曲阳县| 西乌珠穆沁旗| 旬邑县| 共和县| 泰顺县| 荆州市| 竹山县| 南陵县| 微山县| 峡江县| 平顺县| 张家港市| 乌海市| 博野县| 高陵县| 渭源县| 张家界市| 井冈山市| 河南省| 紫云|