日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

PHP使用Zend Opcache之优化加速和缓存清理总结

發(fā)布時(shí)間:2024/9/20 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP使用Zend Opcache之优化加速和缓存清理总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡介

字節(jié)碼緩存不是php的新特性,有很多獨(dú)立性的擴(kuò)展可以實(shí)現(xiàn)緩存,比如PHP Cache(APC),eAccelerator,ionCube和XCache等等。但是到目前為止,這些獨(dú)立的擴(kuò)展并沒有集成到php核心當(dāng)中。所有在php5.5.0之后,php內(nèi)置了字節(jié)碼緩存功能,叫做Zend Opcache。

zend Opcache前身是Zend Optimizer +,在03年改名Opcache,通過opcode緩存和優(yōu)化提供更快的PHP執(zhí)行過程。他會(huì)將預(yù)編譯后的php文件存儲(chǔ)在共享內(nèi)存中以供以后的使用,避免從磁盤讀取文件在進(jìn)行解釋的重復(fù)過程,減少時(shí)間和內(nèi)存的消耗。在php5.5中及之后的版本中自帶了zend opcache模塊擴(kuò)展,但是需要使用時(shí)需要我們開啟和配置。在php5.2- 5.4版本我們也可以使用Opcache,但是需要我們自行安裝。

?

?

什么是操作碼緩存

那么什么是字節(jié)碼緩存呢?php是一門解釋型的語言,php解釋器執(zhí)行php腳本時(shí)會(huì)解析php腳本代碼,將php腳本代碼編譯成一系列可以直接運(yùn)行的中間代碼,也稱為操作碼(Operate Code,opcode)。然后執(zhí)行這些操作碼.

每次請(qǐng)求php文件都是這樣,所以會(huì)消耗很多資源,如果每次HTTP請(qǐng)求PHP都必須解析,編譯和運(yùn)行腳本,消耗的資源將會(huì)更多.

Opcode cache 的目地是避免重復(fù)編譯,減少 CPU 和內(nèi)存開銷。需要注意的是如果動(dòng)態(tài)內(nèi)容的性能瓶頸不在于 CPU 和內(nèi)存,而在于 I/O 操作,比如數(shù)據(jù)庫查詢帶來的磁盤 I/O 開銷,那么 opcode cache 的性能提升是非常有限的.

現(xiàn)代操作碼緩存器(Optimizer+,APC2.0+,其他)使用共享內(nèi)存進(jìn)行存儲(chǔ),并且可以直接從中執(zhí)行文件,而不用在執(zhí)行前“反序列化”代碼。這將帶來顯著的性能加速,通常降低了整體服務(wù)器的內(nèi)存消耗,而且很少有缺點(diǎn).

?

?

安裝(php5.5.0以上跳過)

在PHP 5.5.0及之后版本中,PHP已經(jīng)將Opcache功能以拓展形式內(nèi)嵌在發(fā)布版本中了,默認(rèn)未開啟Opcache加速,需要我們手動(dòng)開啟。對(duì)于之前的老版本,可以將Opcache作為PECL拓展庫進(jìn)行安裝和配置.

window下的安裝

1. 下載擴(kuò)展:https://windows.php.net/downloads/pecl/releases/opcache/

2. 將php_opcache.dll放進(jìn)php/ext目錄下

3. 修改php.ini下[php]配置(注意路徑要修改成你自己的):

[php] engine = On extension = php_opcache.dll zend_extension = "c:/xxx/php/ext/php_opcache.dll" 4. 添加php.ini下的[opcache]配置: [opcache] 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 5. 重啟apache服務(wù),檢查opcache是否開啟成功

?

linux下的安裝

源碼安裝

wget http://pecl.php.net/get/zendopcache-7.0.5.tgz tar zxvf zendopcache-7.0.5.tgz cd zendopcache-7.0.5 /path/to/php/bin/phpize ./configure --with-php-config=/path/to/php/bin/php-config make && make install 在php.ini下的[php]添加如下配置: zend_extension=php_opcache.so 在php.ini的[opcache]下添加: 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 pecl 版本安裝 yum install php-pecl-zendopcache 安裝時(shí)產(chǎn)生的 opcache 的配置文件位于默認(rèn)的 /etc/php.d 目錄中: opcache-default.blacklist opcache.ini 修改該配置: vi /etc/php.d/opcache.ini 對(duì)照修改: 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 不需要修改php.ini,重啟apache服務(wù).

?

常用配置

;開關(guān)打開 opcache.enable=1;開啟CLI opcache.enable_cli=1;可用內(nèi)存, 酌情而定, 單位為:Mb opcache.memory_consumption=528;Zend Optimizer + 暫存池中字符串的占內(nèi)存總量.(單位:MB) opcache.interned_strings_buffer=8;對(duì)多緩存文件限制, 命中率不到 100% 的話, 可以試著提高這個(gè)值 opcache.max_accelerated_files=10000;Opcache 會(huì)在一定時(shí)間內(nèi)去檢查文件的修改時(shí)間, 這里設(shè)置檢查的時(shí)間周期, 默認(rèn)為 2, 定位為秒 opcache.revalidate_freq=1;打開快速關(guān)閉, 打開這個(gè)在PHP Request Shutdown的時(shí)候回收內(nèi)存的速度會(huì)提高 opcache.fast_shutdown=1;檢查腳本時(shí)間戳是否有更新的周期,以秒為單位。設(shè)置為 0 會(huì)導(dǎo)致針對(duì)每個(gè)請(qǐng)求, OPcache 都會(huì)檢查腳本更新。 opcache.revalidate_freq=0 ;如果啟用,那么 OPcache 會(huì)每隔 opcache.revalidate_freq 設(shè)定的秒數(shù) 檢查腳本是否更新。 ;如果禁用此選項(xiàng),你必須使用 opcache_reset() 或者 opcache_invalidate() 函數(shù)來手動(dòng)重置 OPcache,也可以 通過重啟 Web 服務(wù)器來使文件系統(tǒng)更改生效。 opcache.validate_timestamps=0 注意:如果設(shè)置opcache的opcache.validate_timestamps的指令設(shè)成0,那么zend opcache就察覺不到PHP腳本的變化,我們必須手動(dòng)清空zend opcache緩存的字節(jié)碼,讓他發(fā)現(xiàn)php腳本的變動(dòng).這個(gè)設(shè)置適合在生產(chǎn)環(huán)境中設(shè)置成0,在開發(fā)環(huán)境下最好還是設(shè)置成1.

我們可以這樣配置,啟用自動(dòng)重新驗(yàn)證緩存功能:

opcache.validate_timestamps=1 opcache.revalidate_freq=0

更多的配置指令可以看這里:http://php.net/manual/zh/opcache.configuration.php

?

常用函數(shù)

zend opcache使用很簡單,因?yàn)樗鼏?dòng)后會(huì)自動(dòng)運(yùn)行.zend opcache會(huì)自動(dòng)在內(nèi)存中緩存預(yù)先編譯好的php字節(jié)碼,如果緩存了某個(gè)文件的字節(jié)碼,就執(zhí)行對(duì)應(yīng)的字節(jié)碼.常見的關(guān)于zend opcache擴(kuò)展的函數(shù):

opcache_compile_file($php_file); #預(yù)生成opcode緩存opcache_is_script_cached($php_file) #查看是否生成opcode緩存opcache_invalidate($php_file, true) #清除單個(gè)緩存opcache_reset(); #清空緩存opcache_get_status(); #獲取緩存的狀態(tài)信息opcache_get_configuration(); #獲取緩存的配置信息

?

以上

來源:https://www.cnblogs.com/lishanlei/p/9548884.html

總結(jié)

以上是生活随笔為你收集整理的PHP使用Zend Opcache之优化加速和缓存清理总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。