一,PHP緩存加速器介紹與環境準備
1.1 PHP緩存加速器介紹
1.1.1 操做碼介紹及緩存原理
當客戶端請求一個PHP程序時,服務器的PHP引擎會解析該PHP程序,並將其編譯爲特定的操做碼(Operate Code,簡稱opcode)文件,該文件是執行PHP代碼後的一種二進制表示形式。默認狀況下,這個編譯好的操做碼文件由PHP引擎執行後丟棄。而操做碼緩存(Opcode Cache)的原理就是將編譯後的操做碼保存下來,並放到共享內存裏,以便在下一次調用該PHP頁面時重用它,避免了相同代碼的重複編譯,節省了PHP引擎重複編譯的時間,下降了服務器負載,同時減小了CPU和內存開銷。php
1.1.2 PHP緩存加速軟件介紹
爲了提升PHP引擎的高併發訪問及執行速度,產生了一系列PHP緩存加速軟件。這些軟件設計的目的就是緩存前文提到的PHP引擎解析過的1操做碼文件,以便在指定時間內有相同的PHP程序請求訪問時,再也不須要重複解析編譯,而是直接調用緩存中的PHP操做碼文件,這樣就提升了動態Web服務的處理速度,從而提高了用戶訪問企業網站的總體體驗。html
1.2 LAMP環境PHP緩存加速器的原理
下面簡單介紹Apache環境的PHP緩存加速器原理前端
在LAMP環境中,Apache服務是使用libphp5.so響應處理PHP程序請求的,整個流程大概以下:mysql
1)Apache接收客戶的PHP程序請求,並根據規則過濾之。
2)Apache將PHP程序請求傳遞給PHP處理模塊libphp5.so
3)PHP引擎定位磁盤上的PHP文件,並將其加載到內存中解析。
4)PHP處理模塊libphp5.so將PHP源代碼編譯成爲opcode。
5)PHP處理模塊libphp5.so執行opcode,而後把opcode緩存起來。
6)Apache接收客戶端新的PHP程序請求,PHP引擎直接讀取緩存執行opcode文件,並將結果返回。在這一次任務中,就無第4步的編譯解析了,從而提高了PHP編譯解析效率。linux
PHP緩存加速器解決的是上述第5步的問題,默認狀況下PHP會將opcode內容執行後丟棄,這裏卻經過PHP緩存加速軟件,將opcode內容緩存了下來,目的是當有重複請求時,不須要再重複編譯解析PHP程序代碼,由於在高併發高訪問量的網站上,大量的重複編譯會消耗不少的系統資源和時間,而這也就會成爲瓶頸,既影響了處理速度,又加劇了服務器的負載,爲了解決此問題,PHP緩存加速器就這樣誕生了。nginx
下圖是LAMP環境下PHP請求及操做碼緩存過程的原理示意圖:git
1.3 LNMP環境PHP緩存加速器的原理詳解
在LNMP環境中,PHP引擎再也不使用libphp5.so模塊了,而是啓動了獨立的FCGI即php-fpm進程,由它監聽來自Nginx的PHP程序請求,並交給PHP引擎解析處理,整個執行流程大概以下:github
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編譯解析效率。web
下圖爲LNMP環境下PHP請求及操做碼緩存過程的原理示意圖sql
1.4 PHP緩存加速器軟件種類及選擇建議
- PHP緩存加速器軟件常見的種類有XCache,eAccelerator,APC(Alternative PHP Cache),ZendOpcache等,那麼,在企業環境咱們要如何選擇PHP緩存加速器軟件呢?
- 事實上,任選其一便可,不必都安裝上1,都安裝也可能會發生衝突。總的建議就是根據企業的業務需求及選擇前的壓力測試結果,或者根據我的的經驗偏好選擇。不過,我建議同窗們首選XCache,其次是eAccelerator,若是想嘗新,能夠選擇ZendOpcache。
- [x] :首選XCache的緣由以下:
- 通過測試,XCache效率更高,速度更快
- XCache軟件開發社區更活躍。
- 支持更高版本的PHP,例如PHP5.5,PHP5.6
- [x] :次選eAccelerator的緣由以下:
- 安裝及配置參數更簡單,加速效果也不錯。
- 文檔資料較多,但官方對軟件的更新很慢,社區不活躍
- 僅適合PHP版本5.4如下的程序
- [x] :選擇ZendOpcache的緣由以下:
- 是PHP官方研發的新一代緩存加速軟件,之後的發展潛力可能會很好,PHP5.5之前的版本能夠經過ZendOpcache軟件以插件擴展的方式安裝,從PHP5.5版本開始已經整合到PHP軟件裏了,編譯時只須要指定一個參數便可,例如:--enable-opcache。
- ZendOpcache多是將來的緩存加速首選,如今的穩定性還有待檢驗,小規模環境下PHP5之前的版本能夠經過插件式安裝使用,PHP5以上的版本能夠直接指定參數編譯使用。若能夠忍受ZendOpcache的各類未知問題的話,也能夠嘗試使用。
1.5 PHP緩存加速器安裝環境準備
1.5.1 LNMP基礎Web環境準備
在安裝PHP的擴展及緩存加速軟件以前,須要先安裝好LNMP的完整環境,例如:能配置出現phpinfo信息的界面,表示PHP服務正常安裝,同時最好能夠編寫一個調用數據庫的簡單PHP程序,例如test_mysql.php,進而確認MySQL數據庫是否正常。在以前的課程中已經詳細講解了LNMP環境的安裝,配置及部署方法,此處再也不多提。
當前LNMP環境軟件的各個版本信息以下表:
軟件 | 版本 |
---|---|
Linux | CentOS6.5 64bit |
Nginx | 1.6.2 |
MySQL | 5.5.32 |
PHP | 5.3.28 |
若是上述軟件的版本對不上,在安裝PHP的擴展軟件時可能會遇到一些小問題。所以,建議在學習中使用的版本儘可能和教案保持一致,不然可能會出現額外的問題,影響學習進度,等按照書上的操做完成了部署後,再去變換版本操做。這樣的學習方法是最好的。
1.5.2 檢查LNMP的軟件版本
1)查看Linux內核及版本相關信息,命令以下:
[root@LNMP ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@LNMP ~]# uname -r
2.6.32-431.el6.x86_64
[root@LNMP ~]# uname -m
x86_64
2)查看Nginx Web版本相關信息,命令以下:
[root@LNMP ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.6.2
3)查看PHP服務版本相關信息,命令以下:
[root@LNMP ~]# /usr/local/php/bin/php -v
PHP 5.3.28 (cli) (built: Aug 21 2017 19:03:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
4)查看MySQL服務版本相關信息,命令以下:
[root@LNMP ~]# mysqladmin -uroot -p123123 version
mysqladmin Ver 8.42 Distrib 5.5.32, for linux2.6 on x86_64
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 5.5.32
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 5 min 21 sec
Threads: 1 Questions: 168 Slow queries: 0 Opens: 113 Flush tables: 1 Open tables: 4 Queries per second avg: 0.523
1.6 有關LNMP環境擴展插件的部署說明
1.6.1 LNMP緩存加速特別提示
無論是Apache仍是Nginx,最後都是經過PHP提供動態程序解析的,所以,無論是Apache的libphp5.so模塊方式,仍是Nginx的FCGI的PHP服務方式,最終在PHP引擎上的優化是一致的,即都是基於PHP服務(php.ini)的,所以,如無特殊說明,本節之後的環境安裝和優化均適用於LNMP和LAMP。
1.6.2 解決部分加速軟件的Perl編譯問題
在下面各種軟件的安裝編譯過程當中,若是不解決Perl的一些環境問題可能會帶來意想不到的安裝錯誤或警告。爲了不出現這些問題致使前功盡棄,下面把一些攔路虎提早告訴你們,並解決之。
(1)配置環境變量LC_All
#配置環境變量LC_ALL的過程以下:
[root@LNMP ~]# echo 'export LC_ALL=C' >> /etc/profile
#設置環境變量,解決後面Perl程序插件的編譯問題。符號「>>」表示向文件最佳內容
[root@LNMP ~]# tail -1 /etc/profile
#查看是否正確追加了export LC_ALL=C環境配置
export LC_ALL=C
[root@LNMP ~]# source /etc/profile
#使增長的環境變量配置生效
[root@LNMP ~]# echo $LC_ALL
C #查看生效結果,若是不設置該變量,在安裝某些加速軟件時,可能會遇到以下警告(安裝eAccelerator時遇到警告)
(2)安裝Perl相關軟件依賴
須要提早安裝Perl相關軟件依賴軟件包,執行yum -y install perl-CPAN或yum -y install perl-devel,任意一個便可,大約依賴17個包,提早解決後面安裝軟件時可能遇到的報錯問題。
若是不安裝上述軟件包,在後面安裝ImageMagick時可能會報錯。後文安裝ImageMagick時有相應的報錯說明。
二,安裝PHP緩存加速器擴展
2.1 安裝PHP eAccelerator緩存加速模塊
2.1.1 eAccelerator緩存加速插件說明
- eAccelerator是一個免費的,開放源代碼的PHP加速,優化及緩存的擴展插件軟件,它能夠緩存PHP程序編譯後的中間代碼文件(opcode),session數據等,下降PHP程序在編譯解析時對服務器的性能開銷。eAccelerator還能夠加快PHP程序的執行速度,下降服務器負載壓力,使PHP程序代碼執行效率提升1~10倍。
- eAccelerator會把編譯好的PHP程序存放在共享內存裏,而後每次從內存裏調用執行,能夠設定把一些不適合放在內存裏緩存的編譯結果存儲到磁盤上,默認狀況下,磁盤和內存緩存都會被eAccelerator使用。
- eAcclelerator誕生於2004年,前身是Turck MMCache,由於開發者進入了Zend公司工做,因此開發eAccelerator的人繼承了Turck MMCache的一些特性,從而設計出了eAccelerator加速器。
- eAccelerator算是一個「老牌」的緩存加速軟件,曾經在結合PHP引擎解析時被普遍使用,成熟穩定,目前代碼更新不活躍,所以,使用的企業逐漸減小,但eAccelerator還是一款值得信賴的緩存加速軟件。XCache的官方也稱讚eAccelerator是不錯的opcode緩存器。
- eAccelerator0.9.6.1版下載地址:https://github.com/eaccelerator/eaccelerator/downloads
2.1.2 eAccelerator插件安裝過程
[root@LNMP ~]# ls -l eaccelerator-0.9.6.1.tar.bz2
-rw-r--r-- 1 root root 106049 Aug 22 17:05 eaccelerator-0.9.6.1.tar.bz2
[root@LNMP ~]# tar xf eaccelerator-0.9.6.1.tar.bz2 -C /usr/src/
[root@LNMP ~]# cd /usr/src/eaccelerator-0.9.6.1/
[root@LNMP 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
[root@LNMP eaccelerator-0.9.6.1]# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
[root@LNMP eaccelerator-0.9.6.1]# make
..以上省略若干..
Build complete.
Don't forget to run 'make test'. [root@LNMP eaccelerator-0.9.6.1]# make install Installing shared extensions: /usr/local/php5.3.28/lib/php/extensions/no-debug-non-zts-20090626/ [root@LNMP eaccelerator-0.9.6.1]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ eaccelerator.so #最後生成了eaccelerator.so模塊就表示eaccelerator成功安裝
2.2 安裝PHP XCache緩存加速模塊
2.2.1 XCache緩存加速插件說明
- XCache是一個開源的,又快又穩定的PHP opcode緩存器/優化器,其項目leader曾經是Lighttpd(和Nginx相似的高速Web服務軟件)的開發成員之一。XCache把PHP程序編譯後的數據(opcode)緩存到共享內存裏,避免相同的1程序重複編譯。用戶請求相同的PHP程序時,能夠直接使用緩存中已編譯好的數據,從而提升PHP的訪問速度,一般能夠提高2~5倍,並大幅下降服務器負載開銷。
- 不少公司使用XCache,它已經能在大流量/高負載的生產環境中穩定運行,與同類型的opcode緩存器相比在各個方面都更勝一籌,例如:社區活躍,快速開發,可以快速跟進PHP的版本更新等。
- 當前穩定版本爲3.1.x(全面支持PHP5.1~5.5)和3.2.x(2014年末發佈,全面支持PHP5.1~5.6)
XCache軟件詳情請參考:
http://xcache.lighttpd.net或http://xcache.lighttpd.net/wiki/Introduction
2.2.2 XCache插件的安裝過程
[root@LNMP ~]# tar xf xcache-3.2.0.tar.bz2 -C /usr/src/
[root@LNMP ~]# cd /usr/src/xcache-3.2.0/
[root@LNMP 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
[root@LNMP xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
[root@LNMP xcache-3.2.0]# make
..以上省略若干..
Build complete.
Don't forget to run 'make test'.
[root@LNMP xcache-3.2.0]# make install
Installing shared extensions: /usr/local/php5.3.28/lib/php/extensions/no-debug-non-zts-20090626/
[root@LNMP xcache-3.2.0]# ls -l /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
total 1052
-rwxr-xr-x 1 root root 416869 Aug 22 17:10 eaccelerator.so
-rwxr-xr-x 1 root root 657516 Aug 22 17:33 xcache.so #最後生成xcache.so模塊表示成功
2.3 PHP官方加速插件ZendOpcache
2.3.1 ZendOpcache插件說明
- 上面講解了目前常見的PHP緩存加速插件:APC,eAccelerator,XCache,從PHP5.5開始,官方已經集成了新一代的緩存加速插件,其名字爲ZendOpcache,功能和前三者類似但又有少量不一樣,據官方說,ZendOpcache緩存速度更快。
- 這幾個PHP加速插件的主要原理基本相同,就是把PHP執行後的數據緩存到內存中從而避免重複的編譯過程,使其可以直接使用緩存中已編譯的代碼,從而提升速度,下降服務器負載。他們的效率是顯而易見的,一些大型的CMS,每次打開一個頁面要調用數十個PHP文件,執行數萬代碼,效率可想而知,安裝上述加速器後,打開頁面的速度明顯加快。
- PHP5.5以上版本,支持ZendOpcache也有獨立的軟件,而且也支持低版本的PHP 5.2.* ,PHP 5.3.*,PHP 5.4.* 。下面就以PHP 5.3版本爲例講解ZendOpcache軟件,以PHP擴展插件的方式介紹安裝步驟。
官方下載地址爲:http://pecl.php.net/package/ZendOpcache
2.3.2 ZendOpcache插件安裝過程
這裏以當前的最新穩定版本:zendopcache-7.0.5.tgz爲例進行介紹,因爲咱們使用的PHP版本能爲5.3,所以須要以PHP擴展的插件的方式安裝,不能使用PHP編譯直接加參數(--enable-opcache)的方式(PHP 5.5以上才能夠),操做步驟及過程以下。
具體的操做過程以下:
[root@LNMP ~]# tar xf zendopcache-7.0.5.tgz -C /usr/src/
[root@LNMP ~]# cd /usr/src/zendopcache-7.0.5/
[root@LNMP zendopcache-7.0.5]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@LNMP zendopcache-7.0.5]# ./configure --enable-opcache --with-php-config=/usr/local/php/bin/php-config
..以上省略若干..
[root@LNMP zendopcache-7.0.5]# make
..以上省略若干..
Build complete.
Don't forget to run 'make test.
[root@LNMP zendopcache-7.0.5]# make install
Installing shared extensions: /usr/local/php5.3.28/lib/php/extensions/no-debug-non-zts-20090626/
[root@LNMP zendopcache-7.0.5]# ls -l /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
total 1532
-rwxr-xr-x 1 root root 416869 Aug 22 17:10 eaccelerator.so
-rwxr-xr-x 1 root root 491518 Aug 22 17:53 opcache.so #生成opcache.so模塊表示成功
-rwxr-xr-x 1 root root 657516 Aug 22 17:33 xcache.so
三,安裝數據庫緩存及其餘PHP擴展插件
3.1 安裝PHP Memcached擴展插件
3.1.1 Memcached緩存軟件說明
- Memcached是一個開源的,支持高性能,高併發及分佈式的內存緩存服務軟件,從名稱上看,前3個字符的單詞Mem就是內存的意思,然後面5個字符的單詞Cache就是緩存的意思,最後字符d,是daemon的意思,表示服務器端進程模式服務。
- Memcached服務分爲服務器端和客戶端兩部分,其中,服務器端軟件的名字形如Memcached-1.4.13.tar.gz,客戶端軟件的名字形如Memcached-2.27.tar.gz。
- Memcached誕生於2003年,最初由LiveJournal的Brad Fitzpatrick開發完成。Memcache是整個項目的名稱,而Memcached是服務器端的主程序名,因其協議簡單,且支持高併發而被普遍使用。
- 在傳統場景下,多數Web應用都將數據保存到RDBMS中,www服務器從中讀取數據並在瀏覽器中顯示。但隨着數據量的增大,訪問的集中,就會出現RDBMS的負擔加劇,數據庫響應緩慢,網站打開延遲等問題。
- 這時就須要Memcached了。Memcached是高性能的分佈式內存緩存服務。使用Memcached的主要目的是,經過在自身內存中緩存數據庫的查詢結果,減小數據庫訪問次數,以提升動態Web應用的速度,提升網站架構的併發能力和可擴展性。
- Memcached服務經過在事先規劃好的系統內存空間中臨時緩存數據庫中的各種數據,以達到減小前端業務對數據庫的直接高併發訪問,從而提高大規模網站集羣中動態服務的併發訪問能力。
- 生產場景的Memcached服務通常被用來保存網站中常常被讀取的對象或數據,就像咱們的客戶端瀏覽器把常常訪問的網頁緩存起來同樣,經過內存緩存來存取對象或數據要比磁盤存取快不少,由於磁盤是機械的介質,所以,在當今的IT企業中,Memcached的應用範圍很廣。
Memcached服務的工做步驟以下:
第一步:程序首先檢查客戶端請求的數據在Memcached服務的緩存中是否存在,若是存在,直接把請求的數據返回,再也不請求後端數據庫。
第二步:若是請求的數據在Memcached緩存中不存在,則程序會去Memcached後端的數據庫服務。
第三步:把從數據庫中取到的數據返回給客戶端。
第四步:同時把新取到的數據庫的數據緩存一份到Memcached服務緩存中,下次一樣的請求就直接從Memcached服務緩存返回數據1,從而減輕數據庫的訪問壓力。
3.1.2 Memcached緩存PHP擴展插件安裝
- 前文已經提過,Memcached分爲服務器端軟件和客戶端插件兩部分,本文是Memcached客戶端PHP的擴展插件(memcache-2.2.7.tgz)在PHP環境中的安裝,用於訪問Memcached服務器端數據。
- PHP的Memcached擴展插件下載地址爲:http://pecl.php.net/package/memcache.
- PHP的Memcached客戶端擴展插件安裝命令操做以下:
[root@LNMP memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
[root@LNMP memcache-2.2.7]# make
..以上忽略若干..
Build complete.
Don't forget to run 'make test'.
[root@LNMP memcache-2.2.7]# make install
Installing shared extensions: /usr/local/php5.3.28/lib/php/extensions/no-debug-non-zts-20090626/
[root@LNMP memcache-2.2.7]# make install
Installing shared extensions: /usr/local/php5.3.28/lib/php/extensions/no-debug-non-zts-20090626/
[root@LNMP memcache-2.2.7]# ls -l /usr/local/php5.3.28/lib/php/extensions/no-debug-non-zts-20090626/
total 1776
-rwxr-xr-x 1 root root 416869 Aug 22 17:10 eaccelerator.so
-rwxr-xr-x 1 root root 246576 Aug 22 19:23 memcache.so #最後生成了memcache.so模塊,表示memcache擴展插件成功安裝
-rwxr-xr-x 1 root root 491518 Aug 22 17:53 opcache.so
-rwxr-xr-x 1 root root 657516 Aug 22 17:33 xcache.so
3.2 安裝PDO_MYSQL擴展模塊
3.2.1 PDO_MYSQL擴展插件說明
PDO擴展爲PHP訪問數據庫定義了一個輕量級一致性的接口,它提供了一個數據訪問抽象層,這樣,不管使用的是什麼數據庫,均可以經過一致的函數執行查詢並獲取數據。
PDO_MYSQL擴展插件下載地址爲:http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
3.2.2 PDO_MYSQL擴展插件的安裝過程
PDO_MYSQL的安裝有兩種方法,一種是插件方式安裝,另外一種是編譯PHP時加入PDO_MYSQL支持,直接指定PHP的對應PDO_MYSQL編譯參數安裝,例如:--with-pdo-mysql=mysqlnd,同時PHP的環境也能夠不裝MySQL軟件,直接指定以下參數--with-mysql=mysqlnd,便可讓PHP支持鏈接MySQL數據庫。固然了,建議同窗們跟着本書的演示進行,先把路走通了,再去測試老男孩說明方案中提到的方法。此處採用工做中經常使用的PHP擴展插件方式安裝。
完整安裝PDO_MYSQL的操做過程以下:
[root@LNMP ~]# tar xf PDO_MYSQL-1.0.2.tgz -C /usr/src/
[root@LNMP ~]# cd /usr/src/PDO_MYSQL-1.0.2/
[root@LNMP PDO_MYSQL-1.0.2]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
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
[root@LNMP PDO_MYSQL-1.0.2]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
[root@LNMP PDO_MYSQL-1.0.2]# make && make install
[root@LNMP PDO_MYSQL-1.0.2]# ls -l /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
total 1932
-rwxr-xr-x 1 root root 416869 Aug 22 17:10 eaccelerator.so
-rwxr-xr-x 1 root root 246576 Aug 22 19:23 memcache.so
-rwxr-xr-x 1 root root 491518 Aug 22 17:53 opcache.so
-rwxr-xr-x 1 root root 155916 Aug 22 20:02 pdo_mysql.so #出現pdo_mysql.so模塊,表示pdo_mysql成功安裝
-rwxr-xr-x 1 root root 657516 Aug 22 17:33 xcache.so
四,安裝其餘的PHP擴展插件模塊
4.1 安裝圖像處理程序及imagick擴展模塊
4.1.1 安裝ImageMagick圖像軟件
- 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的常見功能以下:
- 將圖片從一個格式轉換成另外一個格式,包括直接轉換成圖標。
- 能夠改變圖片尺寸,旋轉,銳化,減色,設置圖片特效。
- 對圖片設置各類尺寸縮略圖。
- 將圖片設置爲能夠適應於Web背景的透明圖片。
- 將一組圖片作成gif動畫,直接convert
- 將幾張圖片作成一張組合圖片。
- 在一個圖片上寫字或畫圖形,帶文字陰影和邊框渲染。
- 給圖片加邊框或框架
- 取得一些圖片的特性信息
它幾乎包括了gimp能夠實現的全部常規插件功能,甚至包括各類曲線參數的渲染功能。ImageMagick的下載地址爲:http://download.chinaunix.net/download/0001000/95.shtml,請提早下載好放到指定服務器的目錄下。
安裝ImageMagick的操做過程以下:
[root@LNMP ~]# tar xf ImageMagick-6.7.9-9.tar.xz -C /usr/src/
[root@LNMP ~]# cd /usr/src/ImageMagick-6.7.9-9/
[root@LNMP ImageMagick-6.7.9-9]# ./configure
[root@LNMP ImageMagick-6.7.9-9]# make && make install
#提示:此步不是安裝PHP的擴展。所以,沒有生成.so的文件
4.1.2 安裝imagick PHP擴展插件
- Imagick插件工做須要ImageMagick軟件的支持,因此,必需要先安裝ImageMagick,不然會報錯。
- Imagick插件是一個能夠供PHP調用ImageMagick功能的擴展模塊。使用這個擴展可使PHP具有和ImageMagick相同的功能。
- 安裝了ImageMagick圖像程序後,再安裝PHP的擴展Imagick插件,才能使用ImageMagick提供的api進行圖片的建立與修改,壓縮等操做,由於它們都集成在Imagick這個PHP擴展中。
其安裝命令操做過程以下:
[root@LNMP ~]# tar xf imagick-2.3.0.tgz -C /usr/src/
[root@LNMP ~]# cd /usr/src/imagick-2.3.0/
[root@LNMP imagick-2.3.0]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@LNMP imagick-2.3.0]# ./configure --with-php-config=/usr/local/php/bin/php-config
#configure 的參數路徑要正確配置
[root@LNMP imagick-2.3.0]# make && make install
[root@LNMP imagick-2.3.0]# ls -l /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
total 2980
-rwxr-xr-x 1 root root 416869 Aug 22 17:10 eaccelerator.so
-rwxr-xr-x 1 root root 1072857 Aug 22 21:07 imagick.so #出現imagick.so模塊就對了
-rwxr-xr-x 1 root root 246576 Aug 22 19:23 memcache.so
-rwxr-xr-x 1 root root 491518 Aug 22 17:53 opcache.so
-rwxr-xr-x 1 root root 155916 Aug 22 20:02 pdo_mysql.so
-rwxr-xr-x 1 root root 657516 Aug 22 17:33 xcache.so
4.2 檢查全部PHP擴展插件模塊安裝的成果
到此爲止,常見的PHP擴展插件安裝得差很少了,下面看看安裝的成果把。
[root@LNMP imagick-2.3.0]# ls -l /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
total 2980
-rwxr-xr-x 1 root root 416869 Aug 22 17:10 eaccelerator.so
-rwxr-xr-x 1 root root 1072857 Aug 22 21:07 imagick.so
-rwxr-xr-x 1 root root 246576 Aug 22 19:23 memcache.so
-rwxr-xr-x 1 root root 491518 Aug 22 17:53 opcache.so
-rwxr-xr-x 1 root root 155916 Aug 22 20:02 pdo_mysql.so
-rwxr-xr-x 1 root root 657516 Aug 22 17:33 xcache.so
當前一共有6個經常使用擴展模塊,其餘的如有須要之後能夠後續安裝。其中,eaccelerator.so,opcache.so,xcache.so屬於同類軟件,生產環境中安裝其中一種便可,不然,可能會引發同時使用衝突,這裏全都介紹全了,目的是讓同窗們瞭解方法。另外,pdo_mysql.so,imagick.so屬於功能軟件,可選安裝,memcache.so是數據庫緩存軟件,可選安裝。
五, 配置PHP加速與緩存相關的擴展插件模塊
5.1 配置Memcache/PDO_MYSQL/imagick模塊生效。
5.1.1 修改PHP的配置文件php.ini
修改php.ini的配置文件過程以下:
[root@LNMP imagick-2.3.0]# cd /usr/local/php/lib/
[root@LNMP lib]# ls -l php.ini
-rw-r--r--. 1 root root 69627 Aug 21 19:05 php.ini
[root@LNMP lib]# awk '/extension_dir/{print NR,$0}' php.ini
819 ; extension_dir = "./"
821 ; extension_dir = "ext"
957 ; Be sure to appropriately set the extension_dir directive.
1046 ;sqlite3.extension_dir =
[root@LNMP lib]# sed -i '819 s#./#/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/#' php.ini
[root@LNMP lib]# sed -n '819p' php.ini
; extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
[root@LNMP lib]# sed -i '819 s#;##' php.ini
[root@LNMP lib]# sed -n '819p' php.ini
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
而後在php.ini的配置文件結尾追加以下幾行內容
[root@LNMP lib]# echo "extension = memcache.so" >> php.ini
[root@LNMP lib]# echo "extension = pdo_mysql.so" >> php.ini
[root@LNMP lib]# echo "extension = imagick.so" >> php.ini
[root@LNMP lib]# tail -3 php.ini
extension = memcache.so
extension = pdo_mysql.so
extension = imagick.so
5.1.2 檢查配置的相關模塊生效狀況
(1)重啓PHP服務,編寫測試程序phpinfo
首先,重啓PHP服務,並檢查模塊生效狀況,命令以下:
[root@LNMP lib]# pkill php-fpm
[root@LNMP lib]# ps -ef | grep php-fpm | grep -v grep
[root@LNMP lib]# /usr/local/php/sbin/php-fpm
[root@LNMP lib]# ps -ef | grep php-fpm | grep -v grep | wc -l
3
而後在前文提到的blog程序的站點目錄下面增長以下phpinfo.php代碼文件:
[root@LNMP html]# cd /usr/local/nginx/html/
[root@LNMP html]# vim test.php
[root@LNMP html]# cat test.php
<?php
phpinfo();
?>
(2)檢查Memcached擴展插件
配好客戶端的host解析,而後在瀏覽器中輸入http://192.168.0.220/test.php頁面的地址,出現的內容以下圖所示:
經過快捷鍵Ctrl+F進行頁面搜索,若是查找到以下圖所示的內容,表示Memcached插件已生效。
(3)檢查PDO_MYSQL擴展插件
同理,搜索檢查PDO_MYSQL擴展插件,以下圖所示:
(4)檢查IMAGICK擴展插件
同理,搜索檢查IMAGICK擴展插件,以下圖所示:
到此爲止,pdo_mysql.so,imagick.so,memcache.so這三個PHP的擴展插件就所有安裝及配置完畢,後面將配置其他的緩存插件。
5.2 配置eAccelerator插件生效並優化參數
5.2.1 配置eAccelerator緩存目錄
配置命令1:配置eAccelerator緩存目錄,操做以下:
[root@LNMP html]# cd /usr/local/php/lib/
[root@LNMP lib]# mkdir -p /tmp/eaccelerator
[root@LNMP lib]# chown -R nginx.nginx /tmp/eaccelerator
[root@LNMP lib]# ls -ld /tmp/eaccelerator/
drwxr-xr-x 2 nginx nginx 4096 Aug 22 22:07 /tmp/eaccelerator/
配置命令2:配置eAccelerator參數,命令以下:
[root@LNMP lib]# 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.check_mtime="1"
> eaccelerator.debug="0"
> 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
下表爲參數詳細說明:
更多信息請參考http://github.com/eaccelerator/eaccelerator/wiki/Settings
5.2.2 檢查eAccelerator加速配置狀況
提示:若是僅檢查加速狀況配置,能夠不重啓Apache。
執行以下PHP命令,測試緩存的配置狀況:
[root@LNMP lib]# /usr/local/php/bin/php -v
PHP 5.3.28 (cli) (built: Aug 21 2017 19:03:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
重啓PHP服務的命令以下:
[root@LNMP lib]# pkill php-fpm
[root@LNMP lib]# ps -ef | grep php-fpm | grep -v grep
[root@LNMP lib]# /usr/local/php/sbin/php-fpm
[root@LNMP lib]# ps -ef | grep php-fpm | grep -v grep | wc -l
3
如今經過phpinfo檢查eAccelerator插件結果,以下圖所示:此時看看緩存目錄/tmp/eaccelerator,結果以下:
[root@LNMP lib]# ls -l /tmp/eaccelerator/
total 64
drwxrwxrwx 18 root root 4096 Aug 22 22:20 0
drwxrwxrwx 18 root root 4096 Aug 22 22:20 1
drwxrwxrwx 18 root root 4096 Aug 22 22:20 2
drwxrwxrwx 18 root root 4096 Aug 22 22:20 3
drwxrwxrwx 18 root root 4096 Aug 22 22:20 4
drwxrwxrwx 18 root root 4096 Aug 22 22:20 5
drwxrwxrwx 18 root root 4096 Aug 22 22:20 6
drwxrwxrwx 18 root root 4096 Aug 22 22:20 7
drwxrwxrwx 18 root root 4096 Aug 22 22:20 8
drwxrwxrwx 18 root root 4096 Aug 22 22:20 9
drwxrwxrwx 18 root root 4096 Aug 22 22:20 a
drwxrwxrwx 18 root root 4096 Aug 22 22:20 b
drwxrwxrwx 18 root root 4096 Aug 22 22:20 c
drwxrwxrwx 18 root root 4096 Aug 22 22:20 d
drwxrwxrwx 18 root root 4096 Aug 22 22:20 e
drwxrwxrwx 18 root root 4096 Aug 22 22:20 f
咱們能夠看到/tmp/eaccelerator/緩存目錄下也有內容了。以上兩個檢查能夠確認配置是否生效。
5.2.3 訪問PHP頁面測試檢查eAccelerator加速狀況
重啓PHP服務後,在瀏覽器裏訪問PHP頁面,如出現訪問phpinfo頁面,就會有下面的緩存文件(其實上面已經訪問過了)。
[root@LNMP lib]# find /tmp/eaccelerator/ -type f | xargs file
/tmp/eaccelerator/9/e/eaccelerator-86746.197162: data
/tmp/eaccelerator/b/2/eaccelerator-86746.592229: data
/tmp/eaccelerator/e/2/eaccelerator-86746.643229: data
/tmp/eaccelerator/e/1/eaccelerator-86746.926262: data
/tmp/eaccelerator/c/2/eaccelerator-86746.558262: data
/tmp/eaccelerator/6/0/eaccelerator-86746.442262: data
/tmp/eaccelerator/6/0/eaccelerator-86746.352262: data
/tmp/eaccelerator/d/1/eaccelerator-86746.226262: data
/tmp/eaccelerator/d/4/eaccelerator-86746.283362: data
/tmp/eaccelerator/d/4/eaccelerator-86746.583362: data
/tmp/eaccelerator/8/e/eaccelerator-86746.167162: data
提示:eaccelerator-xxxxxx等就是Cache的內容,並且是phpinfo的頁面緩存內容,類型爲data。
5.2.4 使用tmpfs優化eAccelerator緩存目錄
tmpfs是一種基於內存的文件系統,一般使用tmpfs做爲數據臨時存儲,比本地磁盤存儲快不少,此方法適用於臨時使用的各種緩存場景。例如:上傳圖片時不少軟件默認在/tmp下臨時緩存切圖,到tmpfs文件系統上,讓訪問緩存的數據更快。具體操做方法以下:
[root@LNMP ~]# mount -t tmpfs -o size=16m tmpfs /tmp/eaccelerator
#建立16M大小的tmpfs類型文件系統掛載到/tmp/eaccelerator
[root@LNMP ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 2.6G 14G 16% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
/dev/sr0 4.2G 4.2G 0 100% /media/cdrom
tmpfs 16M 0 16M 0% /tmp/eaccelerator
[root@LNMP ~]# grep eacc /proc/mounts #檢查掛載狀況
tmpfs /tmp/eaccelerator tmpfs rw,relatime,size=16384k 0 0
[root@LNMP ~]# echo "mount -t tmpfs -o size=16m tmpfs /tmp/eaccelerator" >> /etc/rc.local
[root@LNMP ~]# tail -1 /etc/rc.local
mount -t tmpfs -o size=16m tmpfs /tmp/eaccelerator #配置永久掛載,生產場景size能夠根據實際狀況調整。
5.3 配置XCache插件加速
提示:
XCache和eAccelerator功能相近,安裝一個便可。考慮到知識的完整性,本節將其做爲知識點來說解,配置以前應刪除eAccelerator的全部配置。
5.3.1 xcache.ini參數說明
xcache軟件的解壓目錄/usr/src/xcache-3.2.0/下存在一個名字爲xcache.ini的配置文件,取XCache的配置文件。下面的表給出了xcache配置文件參數的說明。
5.3.2 修改php.ini配置XCache
1)先在配置XCache參數前加個配置分界符,配置命令以下:
[root@LNMP ~]# cd /usr/local/php/lib/
[root@LNMP lib]# echo >> php.ini
[root@LNMP lib]# echo '; xcache config by Mr.chen 2017-8-24' >> php.ini
[root@LNMP lib]# tail -2 php.ini
; xcache config by Mr.chen 2017-8-24
2)編輯xcache.ini,修改XCache的配置參數,調整的關鍵參數見下表:
以上參數須要根據生產硬件的大小,以及業務數據的訪問量來調整
[root@LNMP lib]# vim /usr/src/xcache-3.2.0/xcache.ini
修改相應配置參數後保存退出
3)將修改後的xcache.ini合併到php.ini結尾。命令以下:
[root@LNMP lib]# cat /usr/src/xcache-3.2.0/xcache.ini >> php.ini
修改後,整個xcache.ini的內容以下:
[root@LNMP lib]# tail -85 php.ini | egrep -v "^;|^$"
[xcache-common]
extension = xcache.so
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "mOo"
xcache.admin.pass = "md5 encrypted password"
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 256M
xcache.count = 2
xcache.slots = 8K
xcache.ttl = 86400
xcache.gc_interval = 3600
xcache.var_size = 64M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.var_namespace_mode = 0
xcache.var_namespace = ""
xcache.readonly_protection = Off
xcache.mmap_path = "/dev/zero"
xcache.coredump_directory = ""
xcache.coredump_type = 0
xcache.disable_on_crash = Off
xcache.experimental = Off
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coverager_autostart = On
xcache.coveragedump_directory = ""
5.3.3 檢查XCache加速狀況配置
再次執行PHP的命令,查看緩存的生效狀況,命令以下:
[root@LNMP lib]# /usr/local/php/bin/php -v
PHP Warning: Cannot load module 'XCache' because conflicting module 'eAccelerator' is already loaded in Unknown on line 0
PHP 5.3.28 (cli) (built: Aug 21 2017 19:03:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
看到了把,上面提示說XCache和eAccelerator衝突。在實際工做中,這兩個軟件能夠任選一個。此時能夠把eAccelerator的配置參數刪除,保留XCache參數,命令以下:
[root@LNMP lib]# sed -n '1922,1936p' php.ini
[eaccelerator]
extension=eaccelerator.so
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
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"
[root@LNMP lib]# sed -i '1922,1936 s#^#;#' php.ini
[root@LNMP lib]# sed -n '1922,1936p' php.ini
;[eaccelerator]
;extension=eaccelerator.so
;eaccelerator.shm_size="64"
;eaccelerator.cache_dir="/tmp/eaccelerator"
;eaccelerator.enable="1"
;eaccelerator.optimizer="1"
;eaccelerator.check_mtime="1"
;eaccelerator.debug="0"
;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"
#提示:將eaccelerator部分的配置信息註釋掉
[root@LNMP lib]# /usr/local/php/bin/php -v
PHP 5.3.28 (cli) (built: Aug 21 2017 19:03:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
with XCache v3.2.0, Copyright (c) 2005-2014, by mOo
with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo
XCache和eAccelerator均使用系統的共享內存做爲存儲空間,所以,有必要調整系統的共享內存大小參數。下面介紹對應的XCache和eAccelerator內核優化方法,命令以下:
[root@LNMP lib]# tail /etc/sysctl.conf
kernel.msgmnb = 65536
# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
如今重啓PHP服務,而後經過phpinfo界面檢查XCache插件結果,以下圖所示:
[root@LNMP lib]# pkill php-fpm
[root@LNMP lib]# /usr/local/php/sbin/php-fpm
5.3.4 配置Web界面查看XCache緩存加速信息
使用Linux命令行md5sum命令,或者打開瀏覽器輸入地址:http://xcache.lighttpd.net/demo/cacher/mkpassword.php,經過輸入字符串生成Xcache管理員的密碼。這裏使用以下md5sum命令生成密文密碼。
[root@LNMP xcache-3.2.0]# cd /usr/local/php/lib/
[root@LNMP lib]# sed -n '1950p' php.ini
xcache.admin.user = "mOo"
[root@LNMP lib]# sed -i '1950 s#mOo#yunjisuan#' php.ini
[root@LNMP lib]# sed -n '1950p' php.ini
xcache.admin.user = "yunjisuan" #改用戶名
[root@LNMP lib]# sed -n '1951p' php.ini
xcache.admin.pass = "md5 encrypted password" #改爲密文密碼
[root@LNMP lib]# echo "123456" | md5sum
e10adc3949ba59abbe56e057f20f883e -
[root@LNMP lib]# vim php.ini +1951
[root@LNMP lib]# sed -n '1951p' php.ini
xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e"
而後複製XCache軟件下面的緩存加速管理PHP程序到站點目錄下,命令以下:
[root@LNMP lib]# cd /usr/src/xcache-3.2.0/
[root@LNMP xcache-3.2.0]# cp -a htdocs/ /usr/local/nginx/html/xadmin
[root@LNMP xcache-3.2.0]# chown -R nginx.nginx /usr/local/nginx/html/xadmin
[root@LNMP xcache-3.2.0]# pkill php-fpm
[root@LNMP xcache-3.2.0]# /usr/local/php/sbin/php-fpm
訪問http://192.168.0.220/xadmin/index.php,彈出驗證框,須要輸入密碼,以下圖所示:
登錄後的相關信息以下圖所示:
有關緩存XCache的狀態,命中等相關信息均可以經過這個XCache管理界面查看。
5.4 配置ZendOpcache插件加速
5.4.1 配置ZendOpcache參數
在php.ini的最後面加入下面幾行:
[root@LNMP ~]# tail -10 /usr/local/php/lib/php.ini
[opcache]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so;extension=opcache.so
opcache.memory_consumption=32
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=1000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
5.4.2 檢查ZendOpcache生效狀況
#下面使用PHP命令檢查生效狀況:
[root@LNMP ~]# /usr/local/php/bin/php -v
PHP 5.3.28 (cli) (built: Aug 21 2017 19:03:26)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
with XCache v3.2.0, Copyright (c) 2005-2014, by mOo
with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo
能夠看到ZendOpcache已經生效,而且貌似和XCache相處的比較融洽,不過工做中是否多選,還要慎重選擇。
如今重啓PHP服務,並經過phpinfo界面檢查XCAche插件結果,以下圖所示:
5.4.3 ZendOpcache配置參數說明
以下圖中針對OPcache的部分重要參數進行了說明。
說明:
- ZendOpcache是PHP官方的新一代的緩存加速軟件,PHP 5.5之前經過ZendOpcache軟件以插件擴展的方式安裝,從PHP 5.5版本開始已經整合到PHP軟件裏,編譯時只須要指定一個參數便可,
例如:---enable-opcache- ZendOpcache多是將來的首選項,如今的穩定性還有待檢查。在小規模環境下,php5以上的版本可使用。若是能夠忍受其未知的問題也可使用。
六,生產環境PHP擴展插件的安裝建議
6.1 PHP的安裝插件表格列表
常見的PHP擴展插件及其說明見下表所示:
6.2 生產環境插件的安裝建議
1)對於功能性插件,若是業務產品不須要使用,能夠暫時不考慮安裝,例如PDO_MYSQl\memcache\imagick等。若是不清楚是否須要,最好仍是裝上,有備無患。
2)對於性能優化插件,eAccelerator,XCache,ZendOpcache,APC能夠安裝任意一種,具體狀況看實際業務需求,在選擇時最好能搭建相關環境進行壓力測試,而後根據實際測試結果來選擇,用數聽說話很重要。
6.3 PHP加速插件的測試對比
下表爲相關PHP加速插件的測試結果對比參考
下面是針對PHP加速器比較結果進行的總結
- 經過測試得出,eAccelerator在請求時間和內存佔用綜合方面是最好的。
- 經過測試得出,是用加速器比無加速器在請求時間快了3倍左右。
- 經過各個官方觀察,XCache的更新是最快的,這也說明它是最有發展前景的。
以上是總結結果,也許有人會疑惑到底用哪一個加速器好呢?我只能告訴你,首先,用必定比不用好,其次每一個加速器還有一些能夠調優的參數,因此要根據系統環境而定。此外,XCache和ZendOpcache這兩款加速器的潛力仍是很大的,能夠多關注一下。
七,補充知識
7.1 phpize是什麼?
- 安裝PHP擴展插件的時候,經常有這樣一條命令:/usr/local/php/bin/phpize,可能有同窗會問phpize有什麼用?
- 事實上,phpize是用來擴展PHP擴展模塊的,經過phpize能夠創建PHP的外掛模塊。好比想在原來編譯好的PHP中加入Memcached等擴展模塊,可使用phpize工具。
PHP的官方說明地址:http://php.net/manual/en/install.pecl.phpize.php- 那麼,要如何使用phpize呢?
- 編譯PHP後,其bin目錄下會有phpize這個腳本文件。在編譯要添加的擴展模塊以前,執行如下phpize就能夠了。好比,如今如今PHP中加入memcached擴展模塊,那麼要作的只是執行以下的Memcached客戶端軟件安裝命令:
#例如:以下操做,這裏僅做操做示例
wget -q 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前必須先執行這個命令
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make
make install
這樣就編譯完成了,還須要作的就是在php.ini里加入以下
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension = memcache.so
提示:
上述兩行配置的做用是加載使得Memcached客戶端配置生效
extension_dir的路徑就是memcache.so模塊文件所在的路徑。
八,PHP緩存加速壓力測試練習(同窗們開始實驗)
分別安裝ZendOpcache,eAccelerator,XCache緩存加速插件,經過壓測軟件對比三者的緩存效率。
測試方法:
1)不裝任何加速插件和分別安裝某一個緩存加速軟件。
2)可用壓力測試軟件webbench,loadruner
3)用壓力測試方法,經過數據看看到底哪一個加速器好。
九,本節學習內容參考資料
- eAccelerator官方地址
http://eaccelerator.net
https://github.com/eaccelerator/eaccelerator/wiki
https://github.com/eaccelerator/eaccelerator/downloads - XCache官方資料
http://xcache.lighttpd.net
http://xcache.lighttpd.net/wiki/Introduction - ZendOpcache官方資料
http://pecl.php.net/package/ZendOpcache
附錄:webbench的安裝及使用
1)webbench的安裝
[root@LNMP webbench-1.5]# wget http://www.ha97.com/code/webbench-1.5.tar.gz
[root@LNMP ~]# tar xf webbench-1.5.tar.gz
[root@LNMP ~]# cd webbench-1.5
[root@LNMP webbench-1.5]# mkdir /usr/local/man
[root@LNMP webbench-1.5]# make install clean
[root@LNMP webbench-1.5]# which webbench
/usr/local/bin/webbench
2)webbench的使用
[root@localhost ~]# echo "192.168.0.220 www.yunjisuan.com" >> /etc/hosts #將要測試的域名添加映射
[root@localhost ~]# webbench -c 600 -t 60 http://www.yunjisuan.com/test.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://www.yunjisuan.com/test.php
600 clients, running 60 sec.
Speed=322357 pages/min, 1984728 bytes/sec.
Requests: 322357 susceed, 0 failed.
#說明:
-c:併發數
-t:持續時間
Speed:每秒處理的請求數
bytes/sec:每秒傳輸的數據量
Requests:322357成功,0失敗
[root@localhost ~]# webbench -c 2000 -t 60 http://www.yunjisuan.com/test.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://www.yunjisuan.com/test.php
2000 clients, running 60 sec.
Speed=303303 pages/min, 5304600 bytes/sec.
Requests: 303176 susceed, 127 failed.
#這個測試就到達負荷了。出現了127個失敗