《PHP教程:在Win7 中為php擴(kuò)展配置Xcache》要點(diǎn):
本文介紹了PHP教程:在Win7 中為php擴(kuò)展配置Xcache,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
XCache 工程由 mOo 領(lǐng)隊(duì), 他也是 Lighttpd 的開(kāi)發(fā)成員之一. Lighttpd 是最快的 Web 服務(wù)器應(yīng)用程序之一, 并且超越 Apache 以及許多其他 Web 服務(wù)器. XCache 努力達(dá)到類似的效果.PHP應(yīng)用
目前最新的版本為XCache 3.2.0,它是php5全系列支持的,官方網(wǎng)站: http://xcache.lighttpd.net/PHP應(yīng)用
如果英文不好的朋友,可以點(diǎn)右邊切換語(yǔ)言為中文.PHP應(yīng)用
首先下載最新的版本: http://xcache.lighttpd.net/pub/Releases/3.2.0/ 記得選擇正確的版本.PHP應(yīng)用
下載解壓后放到php下的ext目錄下,然后打開(kāi)php.ini 添加extension = php_xcache.dllPHP應(yīng)用
壓縮包內(nèi)還有一個(gè)中文版Xcache的php.ini的示范,還有就是一個(gè)查看Xcache及信息的程序.PHP應(yīng)用
注意xcache.admin.pass 用md5加密后存放PHP應(yīng)用
xcache.count可以根據(jù)你CPU的數(shù)設(shè)置,默認(rèn)為1PHP應(yīng)用
xcache.slots緩存的文件/變量hash參考值,根據(jù)自己的實(shí)際情況可以設(shè)置PHP應(yīng)用
完成后,重新啟動(dòng)Apache服務(wù).PHP應(yīng)用
代碼如下:
;; 本文件只是例子, 請(qǐng)?jiān)?php.ini 里設(shè)置以便生效
[xcache-common]
;; 非 windows 例子:
extension = xcache.so
;; Windows 系統(tǒng)例子:
; extension = php_xcache.dll
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "mOo"
; xcache.admin.pass = md5($您的暗碼)
; 登錄使用 $your_password下面的暗碼請(qǐng)用md5加密后填寫到里面
xcache.admin.pass = ""
[xcache]
; 這里的多數(shù)選項(xiàng)僅在 ini 里可以修改, 這里列出的都是默認(rèn)值, 除非另外說(shuō)明
; 選擇底層內(nèi)存共享實(shí)現(xiàn)方案
xcache.shm_scheme =??????? "mmap"
; 禁用: xcache.size=0
; 啟用: xcache.size=64M 之類 (任意>0的值) 同時(shí)請(qǐng)注意您的系統(tǒng) mmap 上限
xcache.size? =?????????????? 60M
; 建議設(shè)置為 cpu 數(shù) (cat /proc/cpuinfo |grep -c processor)
xcache.count =???????????????? 1
; 只是個(gè) hash 參考值, 實(shí)際存儲(chǔ)項(xiàng)目(php腳本/變量)可超過(guò)這個(gè)數(shù)字
xcache.slots =??????????????? 8K
; 緩存項(xiàng)目的 ttl, 0=永久
xcache.ttl?? =???????????????? 0
; 掃描過(guò)期項(xiàng)目的時(shí)間間隔, 0=不掃描, 其他值以秒為單位
xcache.gc_interval =?????????? 0
; 同上, 只是針對(duì)變量緩存設(shè)置
xcache.var_size? =??????????? 4M
xcache.var_count =???????????? 1
xcache.var_slots =??????????? 8K
; xcache_*() 函數(shù) ttl 參數(shù)的默認(rèn)值
xcache.var_ttl?? =???????????? 0
; 限制 xcache_*() 函數(shù) ttl 參數(shù)不超過(guò)此設(shè)置. 0=不限制
xcache.var_maxttl?? =????????? 0
xcache.var_gc_interval =???? 300
; /dev/zero 時(shí)無(wú)效
xcache.readonly_protection = Off
; 對(duì)于 *nix 系統(tǒng), xcache.mmap_path 是文件路徑而不是目錄. (自動(dòng)創(chuàng)建/覆蓋)
; 如果您期望啟用 ReadonlyProtection, 必須避免使用 "/dev/*", 可以使用類似 "/tmp/xcache"
; 不同 php 進(jìn)程組不會(huì)共享同一個(gè) /tmp/xcache
; 對(duì)于 Win32 系統(tǒng), xcache.mmap_path=匿名MAP名字, 不是文件路徑. 建議使用 XCache 字眼避免跟其他軟件沖突
xcache.mmap_path =??? "/dev/zero"
?
; 僅在 XCache 異常時(shí)有用. 設(shè)置為空(禁用) 或者類似 "/tmp/phpcore/" (能被 php 寫入文件)
xcache.coredump_directory =?? ""
; 僅用于 Windows. 除非 XCache 開(kāi)發(fā)人員告訴你, 否則保持默認(rèn)值
xcache.coredump_type =???????? 0
; 異常時(shí)自動(dòng)禁止緩存
xcache.disable_on_crash =??? Off
; 啟用實(shí)驗(yàn)性功能 (如果有)
xcache.experimental =??????? Off
; 以下是 Request 級(jí)可改設(shè)置. 可以 ini_set, .htaccess 等
xcache.cacher =?????????????? On
xcache.stat?? =?????????????? On
xcache.optimizer =?????????? Off
[xcache.coverager]
; 本功能開(kāi)啟后降低運(yùn)行性能
; 僅在 xcache.coverager == On && xcache.coveragedump_directory == "非空值" 時(shí)本功能才會(huì)啟用
; per request settings. 可以 ini_set, .htaccess 等
; 啟用代碼流程覆蓋面信息采集以及 xcache_coverager_start/stop/get/clean() 等函數(shù)
xcache.coverager =?????????? Off
xcache.coverager_autostart =? On
; 僅在 php ini 文件內(nèi)設(shè)置
; 請(qǐng)確保本目錄能被 coverage viewer 腳本讀取 (注意 open_basedir)
xcache.coveragedump_directory = ""
?然后查看phpinfo,看看Xcache是否已經(jīng)生效.如下圖PHP應(yīng)用
PHP應(yīng)用
現(xiàn)在在web發(fā)布目錄中新建一個(gè)目錄如xcache,將官方的壓縮包內(nèi)的lib及htdocs目錄放里面,PHP應(yīng)用
在瀏覽器輸入http://127.0.0.1/xcache/htdocs/, 會(huì)彈出一個(gè)登陸的賬號(hào)暗碼對(duì)話框,輸入進(jìn)去后,你就可以看到xcache的環(huán)境及配置,變量等等..PHP應(yīng)用
PHP應(yīng)用
PHP應(yīng)用
但實(shí)際上Xcache不但能緩存變量,而且能緩存php文件,如果你的php環(huán)境中配置了Xcache擴(kuò)展后,它會(huì)自動(dòng)將每次給你拜訪的php文件都自動(dòng)緩存.無(wú)需再額外的修改代碼,十分的方便快捷,如下圖的我只拜訪了phpmyadmin,Xcache官方的程序包就可以檢測(cè)到phpmyadmin的cache列表.PHP應(yīng)用
代碼很簡(jiǎn)單,帶單例模式,可以直接在應(yīng)用環(huán)境中使用,代碼在php5.5.12中完美測(cè)試通過(guò).PHP應(yīng)用
代碼如下:
?$c =new Cache_Xcache();
??
?$c->set('key', 'aaaa123');
??
?echo $c->get('key');
??
?Cache_Xcache::getInstance()->set('key1', '999999999999999');
??
?echo Cache_Xcache::getInstance()->get('key1');
?/**------------------------------代碼開(kāi)始----------------------------------**/
? class Cache_Xcache {
??? /**
???? * 單例模式實(shí)例化本類
???? *
???? * @var object
???? */
??? protected static $_instance = null;
??? /**
???? * 默認(rèn)的緩存策略
???? *
???? * @var array
???? */
??? protected $_defaultOptions = array('expire' => 900);
??? /**
???? * 構(gòu)造辦法
???? *
???? * @access public
???? * @return boolean
???? */
??? public function __construct() {
??????? //分析xcache擴(kuò)展模塊???????? if (!extension_loaded('xcache')) {
??????????? die('The xcache extension to be loaded before use!');
??????? }
??????? return true;
??? }
??? /**
???? * 寫入緩存
???? *
???? * @access public
???? *
???? * @param string $key 緩存key
???? * @param mixted $value 緩存值
???? * @param integer $expire 生存周期
???? *
???? * @return boolean
???? */
???? public function set($key, $value, $expire = null) {
??????? //參數(shù)分析???????? if (!$key) {
??????????? return false;
??????? }
??????? $expire = is_null($expire) ? $this->_defaultOptions['expire'] : $expire;
??????? return xcache_set($key, $value, $expire);
???? }
??? /**
???? * 讀取緩存,失敗或緩存撒失效時(shí)返回 false
???? *
???? * @access public
???? *
???? * @param string $key 緩存key
???? *
???? * @return mixted
???? */
???? public function get($key) {
??????? //參數(shù)分析???????? if (!$key) {
??????????? return false;
??????? }
??????? return xcache_isset($key) ? xcache_get($key) : false;
???? }
??? /**
???? * 緩存一個(gè)變量到數(shù)據(jù)存儲(chǔ)
???? *
???? * @access public
???? *
???? * @param string $key 數(shù)據(jù)key
???? * @param mixed $value 數(shù)據(jù)值
???? * @param int $expire 緩存時(shí)間(秒)
???? *
???? * @return boolean
???? */
??? public function add($key, $value, $expire = null) {
??????? //參數(shù)分析???????? if (!$key) {
??????????? return false;
??????? }
??????? $expire = is_null($expire) ? $this->_defaultOptions['expire'] : $expire;
??????? return !xcache_isset($key) ? $this->set($key,$value,$expire) : false;
??? }
??? /**
???? * 刪除指定的緩存
???? *
???? * @access public
???? *
???? * @param string $key 緩存Key
???? *
???? * @return boolean
???? */
???? public function delete($key) {
???????? //參數(shù)分析???????? if (!$key) {
??????????? return false;
??????? }
??????? return xcache_unset($key);
???? }
??? /**
???? * 清空全部緩存變量
???? *
???? * @access public
???? * @return boolean
???? */
??? public function clear() {
??????? return xcache_clear_cache(XC_TYPE_VAR, 0);
??? }
??? /**
???? * 單例模式
???? *
???? * 用于本類的單例模式(singleton)實(shí)例化
???? *
???? * @access public
???? * @return object
???? */
??? public static function getInstance() {
??????? if (!self::$_instance) {
??????????? self::$_instance = new self();
??????? }
??????? return self::$_instance;
??? }
}
維易PHP培訓(xùn)學(xué)院每天發(fā)布《PHP教程:在Win7 中為php擴(kuò)展配置Xcache》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/14580.html