PHP安裝使用Zend Opcache擴展


簡介

Zend OPCache 的前身是Zend Optimizer + (Zend O+),於 2013年3月中旬改名為 Opcache。其通過 opcode 緩存和優化提供更快的 PHP 執行過程。它將預編譯的腳本文件存儲在共享內存中供以后使用,從而避免了從磁盤讀取代碼並進行編譯的時間消耗。同時,它還應用了一些代碼優化模式,使得代碼執行更快。

PHP 在5.5發行版后自帶了Zend OPCache擴展,但默認沒有開啟,PHP5.2,5.3,5.4版也可以使用,但需要自行下載擴展。

什么是opcode緩存

->深入理解PHP原理之Opcodes

當解釋器完成對腳本代碼的分析后,便將它們生成可以直接運行的中間代碼,也稱為操作碼(Operate Code,opcode)。

Opcode cache 的目地是避免重復編譯,減少 CPU 和內存開銷。如果動態內容的性能瓶頸不在於 CPU 和內存,而在於 I/O 操作,比如數據庫查詢帶來的磁盤 I/O 開銷,那么 opcode cache 的性能提升是非常有限的。

但是既然 opcode cache 能帶來 CPU 和內存開銷的降低,這總歸是好事 —— 本着環保的態度,也應該盡量減少消耗不是? :D

現代操作碼緩存器(Optimizer+,APC2.0+,其他)使用共享內存進行存儲,並且可以直接從中執行文件,而不用在執行前“反序列化”代碼。這將帶來顯着的性能加速,通常降低了整體服務器的內存消耗,而且很少有缺點。

Windows下的配置

1,PHP5.5版本前到此下載擴展,放到zend_ext目錄中。

2,修改php.ini配置

[php]
engine = On
zend_extension=php_opcache.dll

3,根據官方建議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

 Linux下的配置

 1,安裝擴展(PHP5.5版本以上跳過此步)

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

2,修改php.ini

 ①在[php]下添加

zend_extension=php_opcache.so

   ②在[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

 

 

配置完成后重啟apache或php-fpm,phpinfo()看到Zend OPCache為Enabled

php -m|grep opcache,有顯示opcache

php -v 顯示with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies 即可

 

 

設置例外

也許服務器上某些內容,比如正在進行調試的網站等,我們不希望對其進行 OPcache。那就可以通過黑名單來將需要例外的文件排除掉。

在 OPcache 的配置文件中有一行配置,如下,

opcache.blacklist_filename=/etc/php.d/opcache*.blacklist

該配置指定用於存儲文件名黑名單的那個文件。很顯然這里使用通配符 * 來指定了一系列文件而不僅僅是特定某個文件。可以一直啟用這一行。等到需要排除某些文件的時候,就編輯對應的黑名單文件。例如,針對 /srv/www/sites/devSite 文件夾下的所有文件,編輯(或者新建)文件,

vim /etc/php.d/opcache-devSite.blacklist

內容為,

/srv/www/sites/devSite/*

通配符 * 表示所有 devSite 文件夾下的文件。

完了之后重新啟動 php-fpm 服務就可以了。

 

 

常用函數

opcache_compile_file($php_file); #預生成opcode緩存
opcache_is_script_cached($php_file) #查看是否生成opcode緩存
opcache_invalidate($php_file, true) #清除單個緩存

opcache_reset(); #清空緩存

opcache_get_status(); #獲取緩存的狀態信息
opcache_get_configuration(); #獲取緩存的配置信息

 

Zend OPCache的詳細配置

->到此

相關問題

【官方】
你也可以禁用 opcache.save_comments 並且啟用 opcache.enable_file_override。 需要提醒的是,在生產環境中使用上述配置之前,必須經過嚴格測試。 因為上述配置存在一個已知問題,它會引發一些框架和應用的異常, 尤其是在存在文檔使用了備注注解的時候。

如果禁用此選項,那么PHP中所有的comment會被禁用,性能會提升,但是有些框架可能會受影響,比如Wordpress,Drupal8、PHPUnit等,建議不要禁用。

 

 

Zend OPCache的管理工具

1,phpinfo()下可以查看使用狀態;

2,https://github.com/amnuts/opcache-gui

3,https://github.com/PeeHaa/OpCacheGUI

4,https://github.com/rlerdorf/opcache-status

 

 

文章參考:

http://www.drupal001.com/2014/09/zend-opcache-php/

http://cnzhx.net/blog/zendopcache-accelerate-php/#install_via_source

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM