標籤:
一個系統的運行效能,除了程式本身要寫的完善,還有要看php本身的一些問題,對於php的運行最佳化,主要有這些加速器:wincache,xcache,ZendOPcache,eAccelerator加速器等;
Wincache:(Xee:微軟的官網)
wincache僅適應iis下搭建PHP,若是在windows下面運行其它php web伺服器 wincache不是很好,可以考慮使用zend效果會更好(php5.5版本已經整合zend opache)。
大家都覺得在PHP在windows下遠不如在linux下啟動並執行好,於是微軟就推出了WinCache Extension for PHP這款程式,目前支援兩個版本分別是1.1和1.3,針對php5.2/5.3/5.4/5.5版本而發布,Wincache 是Windows下對PHP進行加速的軟體,效果顯著。在一些測試中,WinCache的得分比eaccelerator和Xcache得分都要好。WinCache可以在微軟的IIS官方網站上下載,也可以在最火軟體站下載,目前只支援FastCGI運行模式下,Non Thread Safe版本的PHP。 (參考:http://www.veryhuo.com/down/html/72353.html)
php官方英文:Windows Cache Extension for PHP is a PHP accelerator that is used to increase the speed of PHP applications running on Windows and Windows Server. Once the Windows Cache Extension for PHP is enabled and loaded by the PHP engine, PHP applications can take advantage of the functionality without any code modifications. The extension includes PHP opcode cache, file system cache and relative path cache. In addition the extension provides cache API‘s and a PHP session handler.
(詳細使用資料Windows Server 2008 R2 64Bit下進行Wincache安裝與配置教程 & Windows Cache Extension for PHP: 在 IIS 的 PHP 快取提供者)
XCache:
Xcache 和 memcached 是兩個不同層面的緩衝,不存在可比性。
Xcache 是 php 底層的緩衝,它將PHP程式編譯成位元組碼(byte code),再透過伺服器上安裝對應的程式來執行PHP指令碼。而 memcached 是應用程式層緩衝,它通過在記憶體中快取資料和對象來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。
xcache 是不需要修改PHP程式的,只要安裝了就可以自動為你的程式加速,而 memcached 則需要你修改程式的,需要你在操作資料庫之前先詢問下 memcached 有沒有快取資料,如果有且沒有到期則不再訪問資料庫,以達到減少資料庫查詢的目的。
ps:LAMP 的瓶頸在M,即資料庫,以新的KVDB代替舊的關聯式資料庫可以直接提高web應用程式的效能。
ZendOPcache:
Zend OPCache的前身是Zend Optimizer + (Zend O+),在PHP5.5的發行版本中內建了Zend O+,並重新命名為:Zend OPCache。但是預設是沒有啟用的,可以在ini檔案中enable一下。
大家知道目前PHP的快取區外掛程式一般有三個:APC、eAccelerator、XCache,但未來它們可能都會消失,因為PHP 5.5已經整合Zend Opcache,功能和前三者相似但又有少許不同,緩衝速度據說比它們更快(Xee:Zend Opcache和APC都是php官方的,值得信賴。反正不會慢,但是和其他外掛程式同時使用會不會出問題?哈哈)。
據統計,zend opcache比apc效能要好,可以提升提升 5%-9%。
Zend Optimizer + 通過 opcode 的緩衝和最佳化來提速 PHP 的執行.它通過在共用記憶體裡儲存先行編譯的PHP指令碼來提高PHP的效能.這一操作消除了從磁碟讀取PHP檔案然後編譯的過程.此外, 此外它還提供了少量的位元組碼最佳化模式使得代碼執行更快.
值得關注的是Zend OPCache支援PHP5.2.0+的版本,也就是說只要是5.2以上的PHP,都可以是用Zend OPCache,而不需一定要升級到PHP5.5,所以在我們目前的生產網站可以嘗試使用Zend OPCache,如基於Drupal6、Drupal7的PHP5.2,PHP5.3等版本。
(參考:http://www.cnblogs.com/keheng/articles/3721179.html & 用Zend OPCache提高PHP的效能)
eAccelerator:(Xee:官網好像長時間沒有維護了)
eaccelerator無法相容php5.5.0,好在php在5.5.0預設提供了Zend OPcache,所以一直習慣eaccelerator的朋友如果要升級到php5.5.0的話,可能要暫時和eaccelerator說bye bye了。
配置Zend OPcache
一直以來都習慣用eAccelerator為php提供加速,但是目前有兩個問題:
eAccelerator暫時不相容php5.5.0
eAccelerator和Zend Opcache衝突
好在php5.5.0預設提供了Zend Opcache為php加速,配置方法如下:
zend_extension =/usr/local/webserver/php-d/php-5.5.0/lib/php/extensions/no-debug-non-zts-20121212/opcache.so
; 上面zend_extension路徑為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
注意:如果在您的php擴充模組找不到opcache.so說明沒有安裝成功,請重新安裝
這幾個PHP加速外掛程式的主要原理都相同,就是把PHP執行後的資料緩衝到記憶體中從而避免重複的編譯過程,能夠直接使用緩衝區已編譯的代碼從而提高速度,降低伺服器負載,它們的效率是顯而易見的,像drupal這種龐大的CMS,每次開啟一個頁面要調用數十個PHP檔案,執行數萬行代碼,效率可想而知,在安裝APC等加速器後開啟頁面的速度明顯加快。
關於每個設定,我們都要仔細,不能太過於最佳化導致出現某些問題,卻又找不到問題所在!這是得不償失的!
php加速運行最佳化