您好,登錄后才能下訂單哦!
推薦地址:http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps1/
由于國內網站備案比較麻煩,所以筆者便把網站放到了香港。雖然網站免去了備案的困擾,但是從訪問速度上來看,一般要比放于國內的網站慢2-3倍,所以便想辦法對網站做了一些簡單的優化,比如使用緩存系統來提升網站頁面訪問速度。
目前用于Web的緩存系統很多,包括squid、varnish、Nginx自帶的proxy_cache、FastCGI中的fastcgi_cache、APC、Xcache等。
像squid、varnish、Nginx自帶的proxy_cache這類系統,屬于重量級產品,配置維護比較麻煩,不適合小型網站,而且一般用這類系統緩存靜態內容,比如圖片、css、JavaScript等;像FastCGI中的fastcgi_cache,它主要用于緩存動態內容,所以在訪問使用fastcgi_cache的網站時速度極快,但是筆者使用時發現其維護比較麻煩,特別是每次網站有數據要更新后,如果不等到緩沖期過期后得需要手動清除緩存才能看到網站更新的內容;至于APC個人感覺性能就一般了,拿它和Xcache比較時發現訪問使用Xcache網站的速度明顯高于使用APC網站的速度(筆者沒有具體測試),所以最終選擇了使用Xcache。
我們都知道PHP是一種動態語言,它在執行時是以解釋的方式執行,所以PHP代碼每次執行時都會被解析和轉換成操作碼(opcode)。而Xcache是一個開源的操作碼緩存器/優化器,它通過把解析/轉換PHP后的操作碼緩存到文件(直到原始代碼被修改)從而避免重復的解析過程,提高了代碼的執行速度,通常能夠提高頁面生成速率2-5倍,降低了服務器負載,提高了用戶訪問網站的速度。
一、安裝Xcache
# wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz # tar zxvf xcache-1.3.0.tar.gz # cd xcache-1.3.0 # /usr/local/php/bin/phpize # ./configure --enable-xcache--enable-xcache-coverager --enable-xcache-optimizer--with-php-config=/usr/local/php/bin/php-config # make && make install
注:--enable-xcache表示啟用Xcache支持;--enable-xcache-coverager表示包含用于測量加速器功效的附加特性;--enable-xcache-optimizer表示啟用操作碼優化
安裝完畢后系統會提示xcache.so模塊生成路徑,本次生成路徑為/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/,然后把xcache.so移動到/usr/local/php/include/php/ext目錄下。
二、配置管理Xcache
1、修改php配置文件
配置時我們可以參考xcache的配置模板xcache.ini,此文件位于Xcache安裝程序中
# vi /usr/local/php/lib/php.ini
然后添加如下內容
extension_dir=/usr/local/php/include/php/ext [xcache-common] extension = xcache.so [xcache.admin] xcache.admin.enable_auth = On xcache.admin.user = "xcache" xcache.admin.pass = "" [xcache] xcache.shm_scheme ="mmap" xcache.size=60M xcache.count =1 xcache.slots =8K xcache.ttl=0 xcache.gc_interval =0 xcache.var_size=4M xcache.var_count =1 xcache.var_slots =8K xcache.var_ttl=0 xcache.var_maxttl=0 xcache.var_gc_interval =300 xcache.test =Off xcache.readonly_protection = On xcache.mmap_path ="/tmp/xcache" xcache.coredump_directory ="" xcache.cacher =On xcache.stat=On xcache.optimizer =Off [xcache.coverager] xcache.coverager =On xcache.coveragedump_directory =""
2、生成Xcache緩存文件
# touch /tmp/xcache# chmod 777 /tmp/xcache
3、生成Xcache管理員的秘密(MD5密文)
# echo -n "123456" |
md5sume10adc3949ba59abbe56e057f20f883e
然后將上述生成的MD5密文粘貼到php.ini文件中xcache.admin.pass = ""選項,xcache.admin.pass= "e10adc3949ba59abbe56e057f20f883e"
4、拷貝Xcache管理程序到網站根目錄下
# cp -a /tmp/xcache-1.3.0/admin//usr/local/nginx/html/
然后重新啟動PHP,然后訪問http://localhost/admin ,用戶名為xcache 密碼為123456;另外,還可以通過phpinfo來驗證PHP是否支持Xcache
這里要注意的一點就是Xcache只能緩存默認的一些對象,如int, string, array等,不能緩存對象,否則讀取的時候就會報錯。
如果你非要緩存對象的話也有辦法就是將對象序列化,讀取的時候再反序列化一次。
下面我寫的一個Xcache的簡單類:
程序代碼
<?php /** * Xcache moudle */ class cacheHelper{ public $prefix; function __construct(){ if(!function_exists('xcache_get')){ exit("This application must required XCache module."); } } /** * __set * * @param mixed $name * @param mixed $value * @access public * @return void */ public function __set($name, $value){ xcache_set($this->prefix.$name, $value); } /** * __get * * @param mixed $name * @access public * @return mixed */ public function __get($name){ return xcache_get($this->prefix.$name); } /** * __isset * * @param mixed $name * @access public * @return bool */ public function __isset($name){ return xcache_isset($this->prefix.$name); } /** * __unset * * @param mixed $name * @access public * @return void */ public function __unset($name){ xcache_unset($this->prefix.$name); } } ?>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。