成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PHP中怎么利用使用OPCache提升性能

今天就跟大家聊聊有關(guān)PHP中怎么利用使用OPCache提升性能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)公司主營肇源網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),肇源h5成都微信小程序搭建,肇源網(wǎng)站營銷推廣歡迎肇源等地區(qū)企業(yè)咨詢

 

使用OPCache提升PHP的性能

對于 PHP 這樣的解釋型語言來說,每次的運行都會將所有的代碼進行一次加載解析,這樣一方面的好處是代碼隨時都可以進行熱更新修改,因為我們不需要編譯。但是這也會帶來一個問題,那就是無法承載過大的訪問量。畢竟每次加載解析再釋放,都會增加 CPU 的負擔(dān),通常一臺 8核16G 的服務(wù)器在2、3000并發(fā)左右 CPU 就能達到60%以上的使用率。而且如果你使用的是類似于 Laravel 這種大型的框架,效率將更加低下。這個時候,我們通常會通過增加服務(wù)器數(shù)量來做負載均衡,從而達到減輕服務(wù)器壓力的效果。不過,這樣做的成本又會增加許多。那么,有沒有什么優(yōu)化的方案呢?

鳥哥在他的博客中針對 PHP7 的優(yōu)化的一篇文章中,第一條建議就是開啟 OPcache 。當(dāng)然,另外一個方案就是使用 Swoole 。關(guān)于 Swoole 的內(nèi)容我們將來再說,今天,我們先學(xué)習(xí)學(xué)習(xí) OPcache 。

 

什么是 OPcache

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

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

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

 

安裝 Opcache

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

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

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

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

zend_extension=opcache.so
 

另外,還需要啟用它。

opcache.enable=1
 

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

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

ab 測試效果

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

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

PHP中怎么利用使用OPCache提升性能

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

PHP中怎么利用使用OPCache提升性能

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

 

配置參考

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

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

看完上述內(nèi)容,你們對PHP中怎么利用使用OPCache提升性能有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)頁標(biāo)題:PHP中怎么利用使用OPCache提升性能
網(wǎng)頁路徑:http://jinyejixie.com/article6/jojsog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計公司、網(wǎng)頁設(shè)計公司、網(wǎng)站設(shè)計、定制網(wǎng)站、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
应城市| 千阳县| 焦作市| 沧州市| 综艺| 商洛市| 治多县| 东阿县| 建阳市| 华宁县| 五大连池市| 荣成市| 武威市| 四平市| 拉萨市| 麻阳| 郯城县| 井研县| 高雄市| 民和| 罗江县| 乐东| 澜沧| 辽中县| 岢岚县| 徐水县| 武山县| 萝北县| 平泉县| 凭祥市| 昌乐县| 永和县| 嘉义县| 南川市| 蚌埠市| 五峰| 广汉市| 许昌县| 正蓝旗| 仲巴县| 民县|