PHP優化之Operate Code

操做碼介紹及緩存原理php

當客戶端請求一個PHP程序時,服務器的PHP引擎會解析該PHP程序,並將其編譯爲特定的操做碼文件(Operate Code,opcode),這是要執行的PHP代碼的一種二進制表示形式。
默認狀況下,這個編譯好的操做碼文件由PHP引擎執行後丟棄。操做碼緩存(Operate Code)的原理就是將這個編譯後的操做碼保存下來,並放到共享內存裏,以便在下次調用該PHP頁面時複用避免了相同代碼的重複編譯。
節省了PHP引擎重複編譯的時間,下降了服務器負載,同時也減小了CPU和內存開銷

爲了提升PHP引擎的高併發訪問及執行速度,產生了一系列的PHP緩存及加速軟件。
這些軟件設計的目的就是緩存前文提到的PHP引擎解析過的操做碼文件,此時,在指定時間如有相同的PHP程序請求訪問,就不須要從新解析編譯
而是直接調用緩存中的PHP操做碼文件,這樣就提升了動態Web服務的處理速度,從而提高了用戶訪問企業網站的總體體

 

LNMP環境PHP緩存加速器原理詳解前端

在LNMP環境中,PHP引擎再也不使用libphp5.so模塊,而是啓動了獨立的FCGI(php-fpm)進程,由它來監聽來自Nginx的PHP程序請求,並交給PHP引擎解析處理,整個執行流程大概以下
  1、Nginx接收客戶端的PHP程序訪問請求
  2、Nginx根據擴展名等過濾規則將PHP程序請求傳遞給解析PHP的FCGI進程(php-fpm)
  3、php-fpm進程調用PHP解析器讀取站點磁盤上的PHP文件,並加載到內存中
  4、PHP解釋器將PHP程序編譯成opcode文件,而後把opcode緩存起來
  5、php-fpm引擎執行opcode,返回數據給Nginx,進而返回客戶端
  6、Nginx接收新的PHP程序請求,php-fpm引擎就會直接讀取緩存中的opcode執行,將結果返回,而無需進行第4步操做,從而提高了PHP編譯解析效率

 

PHP緩存加速器軟件種類及選擇建議xcache, eaccelerator. ZendOpcahce(另外還有APC略)mysql

1、首選xcache
通過測試效率更好,更快
xcache軟件開發社區活躍
支持更高版本的php,例如php5.5 php5.6
2、次選eaccelerator
安裝配置參數更簡單,加速效果不錯
文檔資料較多,但官方團建的更新較慢,社區不活躍
僅適合php5.4如下的程序
3、ZendOpcahce
php官方的新一代加速軟件,之後發展潛力可能會很好,php5.5之前的版本能夠經過ZendOpcahce軟件以插件擴展的方式安裝,以後的版本已經整合,編譯參數--enable-opcache
ZendOpcahce多是將來的緩存加速首選,如今的穩定性有待檢驗

 

PHP緩存加速器安裝環境準備nginx

LNMP基礎Web環境準備:在安裝PHP的擴展及緩存加速以前,須要先裝好LNMP的完整環境,即phpinfo及數據庫鏈接測試
CentOS release 6.7 (Final)
nginx-1.8.1
MySql5.5.49*64
PHP 5.3.29
有關LNMP環境擴展軟件的部署說明——LNMP緩存加速特別提示
不論是Apache的libphp5.so模塊方式,仍是Nginx的FCGI的PHP服務方式,最後都是經過PHP提供動態程序解析的,所以在PHP引擎上的優化也是一致的,即都是基於PHP(php.ini)的,所以,如無特別說明,本節之後的環境安裝和優化均適合。所以Apache服務的學習也能夠參考


有關LNMP環境擴展軟件的部署說明——LNMP緩存加速特別提示
不論是Apache的libphp5.so模塊方式,仍是Nginx的FCGI的PHP服務方式,最後都是經過PHP提供動態程序解析的
所以在PHP引擎上的優化也是一致的,即都是基於PHP(php.ini)的,所以,如無特別說明,本節之後的環境安裝和優化均適合。所以Apache服務的學習也能夠參考


解決部分加速軟件的perl編譯問題
在下列各軟件的安裝編譯中,若是不解決perl的一些環境問題可能會帶來意想不到的錯誤或警告,爲了不這些問題,需提早解決
1)配置環境變量LC_ALL
#echo "export LC_ALL=C" >>/etc/profile
#tail -1 /etc/profile ==>export LC_ALL=C
#source /etc/profile
#echo $LC_ALL ==>C
若是不設置該變量,在安裝某些加速軟件時,可能會遇到以下問題
perl :waring: Setting locale failed
perl :waring: Please check that your locale settings
LANGUAGE = (unset)
LC_ALL =(unset)

2)安裝perl相關軟件依賴
yum install perl-CPAN或yum install perl-devel
#若是不安裝,在後面安裝ImageMagick時可能會報錯,後文安裝ImageMagick時有報錯說明

 

eAccelerator緩存加速模塊git

eAccelerator的最新版本爲0.9.6.1,支持PHP5.3及之前5系列的版本
https://github.com/eaccelerator/eaccelerator/downloads
早期的0.9.5版本支持PHP4和PHP5.2之前的版本

eAccelerator緩存加速插件說明
eAccelerator是一個免費、開源的PHP加速、優化及緩存的擴展插件軟件,它能夠緩存opcode、session數據等,下降PHP程序在編譯解析時對服務器的性能開銷。
eAccelerator還能夠加快PHP程序的執行速度,下降服務器負載壓力,使PHP程序代碼執行效率能提升1
-10倍 eAccelerator會把編譯好的PHP程序存放在共享內存,而後每次直接從內存調用執行,能夠設定把一些不適合放在內存裏緩存的編譯結果存儲到磁盤上。
默認狀況,磁盤和內存緩存都會被eAccelerator使用。 eAccelerator算是一個老牌的緩存加速軟件,曾經在結合PHP引擎解析時被普遍使用,成熟穩定,目前代碼更新不活躍,所以,使用的企業逐漸較少,可是eAccelerator還是一款值得信賴的緩存加速軟件


eAccelerator安裝
# tar -xf eaccelerator-0.9.6.1.tar.bz2
# cd eaccelerator-0.9.6.1
# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
#make
#make install
Installing shared extensions: /usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/
# ls /usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so


# /usr/local/php/bin/php -v
PHP 5.3.29 (cli) (built: Jan 30 2017 11:48:14)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator



 

PHP xcache緩存加速模塊github

xcache緩存加速插件說明
xcache是一個開源,又快又穩定的PHP opcode緩存器/優化器,其項目leader曾經是Lighttpd的開發成員之一。
xcache經過把PHP程序編譯後的數據(opcode)緩存到共享內存,避免讓相同的程序重複編譯。
用戶請求PHP程序時,能夠直接使用緩存中已編譯好的數據,從而提升PHP的訪問速度,一般能夠提高2-5倍,並大幅下降服務器負載開銷。 不少公司在使用xache,它已經能在大流量/高負載的生產環境中穩定運行,與同類opcode緩存器相比在各個方面都更勝一籌。
例如:社區活躍、快讀開發、可以快速跟進PHP的版本更新等。 當前穩定版本爲3.
1.x(支持PHP5.1-5.5)和3.2.x(支持PHP5.1-5.6) 軟件詳情 http://xcache.lighttpd.net或http://xcache.lighttpd.net/woki/Introduction xcache3.2.x安裝 #wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2 #tar xf xcache-3.2.0.tar.bz2 #cd xcache-3.2.0 #/usr/local/php/bin/phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 #./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config #make #make install Installing shared extensions: /usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/ #ls /usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/ eaccelerator.so xcache.so

 

PHP官方加速插件ZendOpcacheweb

ZendOpcache插件說明
PHP5.5版本後已經集成ZendOpcache,編譯安裝PHP時加入編譯參數--enable-opcache
PHP5.2-PHP5.4以插件方式安裝(http://pecl.php.net/package/ZendOpcache)
Release 7.0.5:
PHP Version: PHP version 5.5.0 or older
PHP Version: PHP 5.2.0 or newer
PEAR Package: PEAR 1.4.0b1 or newer

ZendOpcache安裝 #wget http://pecl.php.net/get/zendopcache-7.0.5.tgz
#tar xf zendopcache-7.0.5.tgz
#cd zendopcache-7.0.5
#/usr/local/php/bin/phpize 
#./configure --enable-opcache --with-php-config=/usr/local/php/bin/php-config 
#make
#make install
#ls /usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/
 eaccelerator.so  opcache.so  xcache.so

==========5.5及之後編譯時爲開啓的,如未開啓
cd /home/tools/php-5.6.22/ext/opcache
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
==========

 

數據庫緩存Memcachedredis

Memcached緩存軟件說明
Memcached是一個開源的、支持高性能、高併發及分佈式的內存緩存服務軟件。
分爲服務器端和客戶端:Memcached-xxx和Memcache-xxx
Release 3.0.8:(Release 2.2.7:)
PHP Version: PHP 4.3.11 or newer
PEAR Package: PEAR 1.4.0b1 or newer

Memcached的做用
傳統場景下,多數web應用都將數據保存到RDBMS中,WWW服務器從中讀取數據並在瀏覽器中顯示,可是隨着數據量的增大,訪問的集中,就會出現RDBMS的負擔加劇,數據庫響應緩慢,網站打開延遲等惡劣影響。
而Memcached是高性能的分佈式內存緩存服務,使用Memcached的主要目的是,經過在自身內存中緩存數據庫的查詢結果,較少數據庫訪問次數,以提升動態Web應用的速度,提升網站架構的併發能力和可擴展性。
Memcached服務經過在事先規劃好的系統內存空間中臨時緩存數據庫中的各種數據,以達到減小前端業務對數據庫的直接高併發訪問,從而提高大規模網站集羣中動態服務的併發訪問能力。



安裝PHP Memcache擴展插件
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar -zxf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make
make install
ls /usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so memcache.so opcache.so xcache.so

提示
若是安裝的是mencache-2.2.4,可能會報錯:make:***[memcache.lo] Error 1
解決方法:cp memcache.loT memcache.lo

 

PDO_MYSQL擴展模塊sql

PDO_MYSQL擴展插件說明:
PDO擴展爲PHP訪問數據庫定義了一個輕量級一致性接口,它提供了一個數據訪問抽象層,這樣,不管使用的是什麼數據庫,均可以經過一致的函數執行查詢並獲取數據
PDO_MYSQL的安裝方法:
  一種是插件安裝,
  另外一種是編譯PHP時直接指定PHP對應PDO_MYSQL的編譯參數
--with-pdo-mysql=mysqlnd PDO_MYSQL擴展插件安裝 wget -q http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz tar -xf PDO_MYSQL-1.0.2.tgz cd PDO_MYSQL-1.0.2 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql #若是未安裝mysql,能夠拷貝個mysql二進制包 make make install ls /usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/ eaccelerator.so memcache.so opcache.so pdo_mysql.so xcache.so php5.5以後若是編譯時未安裝 cd /home/tools/php-5.6.22/ext/pdo_mysql /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql make make install ls /usr/local/php5.6.22/lib/php/extensions/no-debug-non-zts-20131226/ eaccelerator.so memcache.so opcache.so pdo_mysql.so xcache.so 說明: [root@test80 PDO_MYSQL-1.0.2]# /usr/local/php/bin/phpize 遇到以下過錯,彷佛能夠忽略 config.m4:104: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached ../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from... ../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from... aclocal.m4:2754: PHP_CHECK_PDO_INCLUDES is expanded from... config.m4:104: the top level config.m4:104: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached ../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from... ../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from... aclocal.m4:2754: PHP_CHECK_PDO_INCLUDES is expanded from... config.m4:104: the top level

 

PHP擴展插件模塊   ImageMagick及imagick數據庫

安裝圖像處理程序ImageMagick及imagick
ImageMagick是一套功能強大、穩定並且開源的工具集和開發包,能夠用來讀、寫和處理超過89種基本格式的圖片文件,
包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你能夠根據web應用程序的須要動態生成圖片, 
還能夠對一個(或一組)圖片進行改變大小、旋轉、銳化、減色或增長特效等操做,並將操做的結果以相同格式或其它格式保存,對圖片的操做,
便可以經過命令行進行,也能夠用C/C++、Perl、Java、PHP、Python或Ruby編程來完成。同時ImageMagick提供了一個高質量的2D工具包,
部分支持SVG。ImageMagic的主要精力集中在性能,減小bug以及提供穩定的API和ABI上。
ImageMagick 是一個用來建立、編輯、合成圖片的軟件。它能夠讀取、轉換、寫入多種格式的圖片。圖片切割、顏色替換、各類效果的應用,
圖片的旋轉、組合,文本,直線, 多邊形,橢圓,曲線,附加到圖片伸展旋轉。
ImageMagick是免費軟件:所有源碼開放,能夠自由使用,複製,修改,發佈。支持大多數的操做系統。

ImageMagick的功能
1. 將圖片從一個格式轉換到另外一個格式,包括直接轉換成圖標。
2. 改變尺寸、旋轉、銳化(sharpen)、減色、圖片特效
3. 縮略圖片的合成圖( a montage of image thumbnails)
4. 適於web的背景透明的圖片
5. 將一組圖片做成gif動畫,直接convert
6. 將幾張圖片做成一張組合圖片,montage
7. 在一個圖片上寫字或畫圖形,帶文字陰影和邊框渲染。
8. 給圖片加邊框或框架
9. 取得一些圖片的特性信息
10,幾乎包括了gimp能夠做到的常規插件功能。甚至包括各類曲線參數的渲染功能。只是那命令的寫法,夠複雜。

安裝ImageMagick(ftp://ftp.imagemagick.org/pub/ImageMagick/)
tar -xf ImageMagick-6.7.9-9.tar.xz 
cd ImageMagick-6.7.9-9
./configure
make
make install 安裝imagick php擴展插件
  imagick插件工做須要ImageMagic軟件支持,因此,必須先安裝好ImageMagick
  imagick插件是一個能夠供php調用ImageMagick功能的擴展模塊,
  使用這個擴展可使PHP具有ImageMagick功能,使用imagick擴展才能使用ImageMagick的api來對圖片進行操做 imagick擴展插件安裝(http:
//pecl.php.net/package/imagick) tar -xf imagick-2.3.0.tgz cd imagick-2.3.0 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make install ls /usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626 eaccelerator.so imagick.so memcache.so opcache.so pdo_mysql.so xcache.so 安裝imagick3.0擴展插件時報錯 make: *** [imagick_class.lo] Error 1 #yum install ImageMagick-devel 安裝後出現warning,最終make install能產生so文件 warning: 'MagickGetImageMatte' is deprecated (declared at /usr/include/ImageMagick/wand/deprecate.h:82) /root/tmp/pear/imagick/imagick_class.c: In function 'zim_imagick_paintfloodfillimage':

 

配置memcache/pdo_mysql/imagick模塊生效   打開phpinfo頁面進行驗證=====================================================

1、修改php.ini
#vi /usr/local/php/lib/php.ini
extension_dir = "./"
extension_dir = "/usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/"
extension = memcache.so
extension = pdo_mysql.so
extension = imagick.so

報錯 #pkill php
-fpm # /usr/local/php/sbin/php-fpm [21-Oct-2016 14:27:28] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php5.3.29/lib/php/extensions/no-debug-non-zts-20090626/pdo_mysql.so' - libmysqlclient.so.18: cannot open shared object file: No such file or directory in Unknown on line 0
#
grep pdo_mysql /usr/local/php/lib/php.ini extension = pdo_mysql.so ;extension=php_pdo_mysql.dll ; http://php.net/pdo_mysql.cache_size pdo_mysql.cache_size = 2000 ; http://php.net/pdo_mysql.default-socket 解決方案 find / -name libmysqlclient.so vi /etc/ld.so.conf加入libmysqlclient.so的路徑 ldconfig 通用解決方案參考 #找不到.so文件 #find / -name "libmysqlclient.so.18" /usr/lib #vi /etc/ld.so.conf /usr/lib #ldconfig


 

eaccelerator eaccelerator-0.9.6.1.tar.bz2 The latest release, 0.9.6.1, features support for PHP 5.3 and also works with PHP 5.1 and 5.2 https://github.com/eaccelerator/eaccelerator/downloads
  eaccelerator-0.9.5.1.tar.bz2 The previous 0.9.5 branch supports PHP 4 and all PHP 5 releases including 5.2.  
xcache XCache 3.2.0. Latest Stable Release: 3.2.x (full 5.1 ~ 5.6 support) http://xcache.lighttpd.nethttp://xcache.lighttpd.net/woki/Introduction
ZendOpcache   PHP5.5版本後已經集成ZendOpcache,編譯安裝PHP時加入編譯參數--enable-opcache http://pecl.php.net/package/ZendOpcache
Memcache Release 3.0.8:Release 2.2.7:

PHP Version: PHP 4.3.11 or newer

PEAR Package:  1.4.0b1 or newer
http://pecl.php.net/get/memcache-2.2.7.tgz
PDO_MYSQL PDO_MYSQL-1.0.2.tgz PDO_MYSQL的安裝方法:一種是插件安裝,另外一種是編譯PHP時直接指定PHP對應PDO_MYSQL的編譯參數--with-pdo-mysql=mysqlnd

http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

--with-pdo-mysql=mysqlnd,編譯參數在生產中可能遇到socker鏈接問題

解決方法:在php.ini裏添加pdo_mysql.default_scok=/usr/local/php/tmp/mysql.sock

ImageMagick

ImageMagick-6.7.9-9.tar.xz ftp://ftp.imagemagick.org/pub/ImageMagick http://pecl.php.net/package/imagick

生產環境插件安裝建議

功能性插件 PDO_MYSQL\memcache\imagick建議安裝

性能性opcode插件任選一種,選擇時可根據實際壓測結果,上述插件效果都還能夠

主流壓測工具apache abwebbench http_loadloader runner

 

配置 eAccelerator插件生效並優化參數

1、配置eAccelerator緩存目錄
mkdir -p /tmp/eaccelerator #此目錄能夠用tmpfs文件系統或者SSD來存儲
chown -R nginx.nginx /tmp/eaccelerator
2、修改php.ini文件,加載eaccelerator模塊及參數配置
cat >> /usr/local/php/lib/php.ini<<EOF
[eaccelerator]
extension="eaccelerator.so"
eaccelerator.shm_size = "64"   
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.debug = 0  
eaccelerator.check_mtime = "1"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "3600" 
eaccelerator.shm_prune_period = "3600" 
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
EOF

三、訪問PHP頁面測試檢查eaccelerator加速狀況,重啓php服務後,訪問php頁面,如phpini,就會有緩存
# ls /tmp/eaccelerator/
0 1 2 3 4 5 6 7 8 9 a b c d e f
# find /tmp/eaccelerator/ -type f | xargs file
/tmp/eaccelerator/3/8/eaccelerator-0502.413593: data
eaccelerator-0502.413593就是cache的內容,並且是phpinfo的頁面緩存內容,類型爲data

# /usr/local/php/bin/php -v
PHP 5.3.29 (cli) (built: Oct 15 2016 01:56:22)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator


tmpfs
tmpfs是一種基於內存的文件系統,它和虛擬磁盤ramdisk比較相似像,但不徹底相同,和ramdisk同樣,tmpfs可使用RAM,但它也可使用swap分區來存儲。並且傳統的ramdisk是個塊設備,要用mkfs來格式化它,才能真正地使用它;而tmpfs是一個文件系統,並非塊設備,只是安裝它,就可使用了。tmpfs是最好的基於RAM的文件系統。(訪問量大,總量不大的狀況使用)
例如:上傳圖片,切圖,服務器上 /tmp切圖 臨時文件。

使用tmpfs優化eaccelerator緩存目錄
tmpfs是一種基於內存的文件系統,使用tmpfs做爲數據臨時存儲一般比本地磁盤快不少,此方法適合各種緩存場景,例如,上傳圖片時候不少軟件在/tmp下臨時緩存切圖、存放session數據,則可讓/tmp使用tmpfs文件系統來加快訪問效率,本文將/tmp/accelerrator掛載到tmpfs文件系統上,讓訪問緩存數據更快,具體操做以下
[root@test80 ~]# mount -t tmpfs -o size=16m tmpfs /tmp/eaccelerator/
[root@test80 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 14987656 3192996 11026660 23% /
tmpfs 502384 0 502384 0% /dev/shm
/dev/sda1 194241 35987 148014 20% /boot
tmpfs 16384 0 16384 0% /tmp/eaccelerator
提示:如須要原來緩存內容,能夠先cp出來,而後cp進來
tmpfs掛載能夠寫到rc.local

參數詳解
[eaccelerator]           開始eaccelerator加速模塊配置
extension="eaccelerator.so" 加載的eaccelerator模塊位置,相對路徑extension_dir設置
eaccelerator.shm_size = "64" 存儲緩存數據的共享內存大小,若是爲0,則最大值看內核配置/etc/sys/kernel/shmmax
eaccelerator.cache_dir = "/tmp/eaccelerator" 磁盤緩存存儲路徑,緩存內容爲precompiled code.session data,content and user entries here,缺省爲/tmp/eaccelerator
eaccelerator.enable = "1" 緩存生效開關
eaccelerator.optimizer = "1" 加速PHP代碼執行速度,1爲默認值表示激活,用於緩存前的代碼加速
eaccelerator.debug = 0 緩存加速調試,0爲關閉,1爲打開,打開後能夠看到緩存命中信息
eaccelerator.check_mtime = "1" 檢查緩存修改時間決定代碼是否須要從新編譯,1爲激活,是默認值
eaccelerator.filter = "" 設定對象是否緩存規則,空表示不設定
eaccelerator.shm_max = "0" 能夠被放置的最大緩存最大值,0不限制
eaccelerator.shm_ttl = "3600" 緩存文件的生存期
eaccelerator.shm_prune_period = "3600" 當共享內存空間不夠時,從共享內存移除老數據的時間週期
eaccelerator.shm_only = "0" 是否容許緩存數據到磁盤,0爲容許,可是對於session data和Content caching無影響
eaccelerator.compress = "1" 是否開啓壓縮,1爲開啓
eaccelerator.compress_level = "9" 壓縮級別,9爲最高

以下根據內容指定是否緩存到共享內存或磁盤參數
eaccelerator.keys = "shm_and_disk" 控制keys緩存位置
shm_and_disk==>cache data in shared memory and on disk (default value)
shm ==>cache data in shared memory or on disk if shared memory is full or data size greater then "eaccelerator.shm_max"
shm_only ==>cache data in shared memory
disk_only ==>cache data on disk
none ==>don't cache data
eaccelerator.sessions = "shm_and_disk" 控制session緩存位置
eaccelerator.content = "shm_and_disk 控制content緩存位置

eaccelerator.log_file = "/var/log/httpd/eaccelerator_log" Set the log file for eaccelerator. When this option isn't set then the data will be logged to stderr, when using PHP with Apache these lines will be added to the Apache error log.

eaccelerator.name_space = ""
參數詳解https://github.com/eaccelerator/eaccelerator/wiki/Settings#Loading_eAccelerator

 

配置xcache緩存插件加速

配置前應將eAccerator全部配置清除
xcache.ini參數說明-->tar包解壓目錄有xcache.ini配置文件
[root@test80 xcache-3.2.0]# cat xcache.ini   (http://xcache.lighttpd.net/wiki/XcacheIni參數)
;; this is an example, it won't work unless properly configured into php.ini
[xcache-common]         #加載xcache.so,路徑相對於extension_dir的配置
extension = xcache.so      #3.0版本開始再也不支持zend_extension加載xcache的方式
[xcache.admin]           #激活管理員認證
xcache.admin.enable_auth = On

; use http://xcache.lighttpd.net/demo/cacher/mkpassword.php to generate your encrypted password
xcache.admin.user = "mOo"           #指定xcache管理員用戶名和密碼,空表示禁止管理頁面
xcache.admin.pass = "md5 encrypted password"       #密碼根據上述地址產生

[xcache]       #開始配置參數,初始值即默認值
; ini only settings, all the values here is default unless explained

; select low level shm implemenation
xcache.shm_scheme =        "mmap"       #設置如何從系統分配共享內存
; to disable: xcache.size=0
; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
xcache.size  =               60M  #0表示禁止緩存,須要注意系統所容許的nmap最大值
; set to cpu count (cat /proc/cpuinfo |grep -c processor)
xcache.count =                 1  #指定將cache切成多少塊,建議值爲cpu的數量
; just a hash hints, you can always store count(items) > slots
xcache.slots =                8K   #只是做爲hash槽個數的參考值,緩衝超過這個數的內容沒有問題
; ttl of the cache item, 0=forever
xcache.ttl   =                 0  #設置cache對象的生存週期TTL,0爲永不過時
; interval of gc scanning expired items, 0=no scan, other values is in seconds
xcache.gc_interval =           0    回收器掃描過時的對象回收內存空間的間隔,0爲不掃描,單位爲秒

; same as aboves but for variable cache,而不是opcode緩存
xcache.var_size  =            4M
xcache.var_count =             1
xcache.var_slots =            8K
; default value for $ttl parameter of xcache_*() functions
xcache.var_ttl   =             0
; hard limit ttl that cannot be exceed by xcache_*() functions. 0=unlimited
xcache.var_maxttl   =          0
xcache.var_gc_interval =     300

; mode:0, const string specified by xcache.var_namespace
; mode:1, $_SERVER[xcache.var_namespace]
; mode:2, uid or gid (specified by xcache.var_namespace)
xcache.var_namespace_mode =    0
xcache.var_namespace =        ""

; N/A for /dev/zero
xcache.readonly_protection = Off 若是啓用了此參數,會略微下降性能,可是會提升安全係數
這個選項對於xcache.mmap_path =    "/dev/zero"無效
; for *nix, xcache.mmap_path is a file path, not directory. (auto create/overwrite)
; Use something like "/tmp/xcache" instead of "/dev/*" if you want to turn on ReadonlyProtection
; different process group of php won't share the same /tmp/xcache
; for win32, xcache.mmap_path=anonymous map name, not file path
xcache.mmap_path =    "/dev/zero"  #對於*nix, xcache.mmap_path是個文件路徑而非目錄,若是要啓用該參數,請使用"/tmp/xcache" instead of "/dev/*"。若是開啓了xcache.readonly_protection,不一樣進程組的PHP將不會共享同一個/tmp/xcache路徑


; Useful when XCache crash. leave it blank(disabled) or "/tmp/phpcore/" (writable by php)
xcache.coredump_directory =   ""   #當xcache crash後,是否把數據保存到指定路徑
; Windows only. leave it as 0 (default) until you're told by XCache dev
xcache.coredump_type =         0  

; disable cache after crash
xcache.disable_on_crash =    Off  #當xcache crash後,自動關閉xcache緩存

; enable experimental documented features for each release if available
xcache.experimental =        Off

; per request settings. can ini_set, .htaccess etc
xcache.cacher =               On
xcache.stat   =               On
xcache.optimizer =           Off

[xcache.coverager]
; enabling this feature will impact performance
; enabled only if xcache.coverager == On && xcache.coveragedump_directory == "non-empty-value"

; per request settings. can ini_set, .htaccess etc
; enable coverage data collecting and xcache_coverager_start/stop/get/clean() functions
xcache.coverager =           Off
xcache.coverager_autostart =  On

; set in php ini file only
; make sure it's readable (open_basedir is checked) by coverage viewer script
xcache.coveragedump_directory = ""


調整關鍵參數,修改後將上述文件追加到php.ini
xcache.size=64M ##0表示禁止緩存,須要注意系統所容許的nmap最大值 xcache.size=256M
xcache.count = 1 #指定將cache切成多少塊,建議值爲cpu的數量
xcache.ttl = 0 #設置cache對象的生存週期TTL,0爲永不過時 xcache.ttl = 86400
xcache.gc_interval = 0 回收器掃描過時的對象回收內存空間的間隔,0爲不掃描,單位爲秒 xcache.gc_interval = 3600
xcache.var_size = 4M xcache.var_size = 0




 

 

ZendOpcahce緩存加速配置

# vi  /usr/local/php/lib/php.ini        #加入配置參數
[opcache]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
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

[root@test80 zendopcache-7.0.5]# cat README (已刪除部分,須要可查看)
Compatibility
-------------
This version of Zend OPcache is compatible with PHP 5.2.*, 5.3.*, 5.4.*
and PHP-5.5 development branch.  PHP 5.2 support may be removed in the future.
Quick Install
-------------
- Compile

 $PHP_DIR/bin/phpize
 ./configure \
      --with-php-config=$PHP_DIR/bin/php-config
 make
- Install

 make install # this will copy opcache.so into PHP extension directory
- Edit php.ini

 zend_extension=/...full path.../opcache.so

We recommend the following configuration options for best performance
in a production environment.

關鍵參數解釋 opcache.memory_consumption
=128     #opcache共享內存空間大小,用於存放precompiled PHP code,默認64M opcache.interned_strings_buffer=8   #interned strings 內存的數量,默認4M opcache.max_accelerated_files=4000   #opcache哈希表key的最大數量,默認2000 opcache.revalidate_freq=60         #檢查文件時間戳的頻率,用於共享內存分配的變化,默認爲2 opcache.fast_shutdown=1         #默認爲0,若是激活,一個快速的關閉隊列將被用來加速代碼 opcache.enable_cli=1            默認爲0,激活PHP CLI的opcache,用於測試和調試#

 

 redis的php客戶端擴展安裝

redis的php客戶端擴展安裝
wget https://github.com/nicolasff/phpredis/archive/master.zip
unzip phpredis-master.zip 
cd phpredis-master
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install 
vi /usr/local/php/lib/php.ini 
echo "extension = redis.so" >> /usr/local/php/lib/php.ini
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
memcache.so  redis.so
killall php-fpm
/usr/local/php/sbin/php-fpm
相關文章
相關標籤/搜索