首頁  >  文章  >  後端開發  >  win7新增與設定php擴充xcache教學詳解

win7新增與設定php擴充xcache教學詳解

WBOY
WBOY原創
2016-07-25 08:52:291080瀏覽
有關win7系統中為php添加與設置xcache擴展的方法,xcache的安裝與配置教程,xcache.slots緩存的文件/變量hash參考值,根據自己的實際情況可以設置,需要的朋友參考下。 xcache 3.2.0,它是php5全系列支援的,官方網站: http://xcache.lighttpd.net/

如果英文不好的朋友,可以點右邊切換語言為中文。

首先,下載最新的版本:http://xcache.lighttpd.net/pub/releases/3.2.0/ 記得選擇正確的版本。

下載解壓縮後放到php下的ext目錄下,然後開啟php.ini 加入extension = php_xcache.dll

壓縮包內還有一個中文版xcache的php.ini的示範,還有就是一個查看xcache及資訊的程式.

注意xcache.admin.pass 用md5加密後存放

xcache.count可以根據你cpu的數來設定,預設為1

xcache.slots快取的檔案/變數hash參考值,依照自己的實際情況可以設定

完成後,重新啟動apache服務。

;; 本文件只是範例, 請在 php.ini 裡設定以便生效 [xcache-common] ;; 非 windows 範例: extension = xcache.so ;; windows 系統範例: ; extension = php_xcache.dll [xcache.admin] xcache.admin.enable_auth = on xcache.admin.user = "moo" ; xcache.admin.pass = md5($您的密碼) ; 登入使用 $your_password下面的密碼請用md5加密後填入裡面 xcache.admin.pass = "" [xcache] ; 這裡的多數選項只在 ini 裡可以修改, 這裡列出的都是預設值, 除非另外說明 ; 選擇底層記憶體共享實作方案 xcache.shm_scheme = "mmap" ; 停用: xcache.size=0 ; 啟用: xcache.size=64m 之類 (任意>0的值) 同時請注意您的系統 mmap 上限 xcache.size = 60m ; 建議設定為 cpu 數 (cat /proc/cpuinfo |grep -c processor) xcache.count = 1 ; 只是個 hash 參考值, 實際儲存項目(php腳本/變數)可以超過這個數字 xcache.slots = 8k ; 快取項目的 ttl, 0=永久 xcache.ttl = 0 ; 掃描過期項目的時間間隔, 0=不掃描, 其他值以秒為單位 xcache.gc_interval = 0 ; 同上, 只是針對變數快取設置 xcache.var_size = 4m xcache.var_count = 1 xcache.var_slots = 8k ; xcache_*() 函數 ttl 參數的預設值 xcache.var_ttl = 0 ; 限制 xcache_*() 函數 ttl 參數不超過此設定. 0=不限制 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 ; /dev/zero 時無效 xcache.readonly_protection = off ; 對於 *nix 系統, xcache.mmap_path 是檔案路徑而不是目錄. (自動建立/覆蓋) ; 如果您期望啟用 readonlyprotection, 必須避免使用 "/dev/*", 可以使用類似 "/tmp/xcache" ; 不同 php 進程組不會共用同一個 /tmp/xcache ; for win32 系統, xcache.mmap_path=匿名map名字, 不是檔案路徑. 建議使用 xcache 字眼避免跟其他軟體衝突 xcache.mmap_path = "/dev/zero" ; 僅在 xcache 異常時有用. 設定為空(禁用) 或類似 "/tmp/phpcore/" (能被 php 寫入檔案) xcache.coredump_directory = "" ; 僅用於 windows. 除非 xcache 開發人員告訴你, 否則保持預設值 xcache.coredump_type = 0 ; 異常時自動禁止快取 xcache.disable_on_crash = off ; 啟用實驗性功能 (如果有) xcache.experimental = off ; 以下是 request 等級可改設定. 可以 ini_set, .htaccess 等 xcache.cacher = on xcache.stat = on xcache.optimizer = off [xcache.coverager] ; 本功能開啟後降低運轉效能 ; 僅在 xcache.coverager == on && xcache.coveragedump_directory == "非空值" 時本功能才會啟用 ; per request settings. 可以 ini_set, .htaccess 等 ; 啟用程式碼流程覆蓋面資訊擷取以及 xcache_coverager_start/stop/get/clean() 等函數 xcache.coverager = off xcache.coverager_autostart = on ; 僅在 php ini 檔案內設置 ; 請確保本目錄能被 coverage viewer 腳本讀取 (注意 open_basedir) xcache.coveragedump_directory = ""

然後查看phpinfo,看看xcache是​​否已經生效。如下圖

現在在web發布目錄中新建一個目錄如xcache,將官方的壓縮包內的lib及htdocs目錄放裡面,

在瀏覽器輸入http://127.0.0.1/xcache/htdocs/, 會彈出一個登陸的帳號密碼對話框,輸入進去後,你就可以看到xcache的環境及配置,變數等等。 。

但實際上xcache不但能緩存變量,而且能緩存php文件,如果你的php環境中配置了xcache擴展後,它會自動將每次給你訪問的php文件都自動緩存。無需再額外的修改程式碼,十分的方便快捷,如下圖的我只訪問了phpmyadmin,xcache官方的程式包就可以偵測到phpmyadmin的cache列表。

程式碼很簡單,帶有單例模式,可以直接在應用程式環境中使用,程式碼在php5.5.12中完美測試通過。

$c =new cache_xcache(); $c->set('key', 'aaaa123'); echo $c->get('key'); cache_xcache::getinstance()->set('key1', '999999999999999'); echo cache_xcache::getinstance()->get('key1'); /**------------------------------代碼開始------------------ ----------------**/ class cache_xcache { /*** 單例模式實例化本類 * * @var object*/ protected static $_instance = null; /*** 預設的快取策略 * * @var array*/ protected $_defaultoptions = array('expire' => 900); /*** 建構方法 * * @access public * @return boolean*/ public function __construct() { //分析xcache擴充模組 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) { //參數分析 if (!$key) { return false; } $expire = is_null($expire) ? $this->_defaultoptions['expire'] : $expire; return xcache_set($key, $value, $expire); } /*** 讀取緩存,失敗或緩存撒失效時返回 false * * @access public * * @param string $key 快取key * * @return mixted*/ public function get($key) { //參數分析 if (!$key) { return false; } return xcache_isset($key) ? xcache_get($key) : false; } /*** 快取一個變數到資料存儲 * * @access public * * @param string $key 資料key * @param mixed $value 資料值 * @param int $expire 快取時間(秒) * * @return boolean*/ public function add($key, $value, $expire = null) { //參數分析 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) { //參數分析 if (!$key) { return false; } return xcache_unset($key); } /*** 清空全部快取變數 * * @access public * @return boolean*/ public function clear() { return xcache_clear_cache(xc_type_var, 0); } /*** 單例模式 * * 用於本類別的單例模式(singleton)實例化 * * @access public * @return object*/ public static function getinstance() { if (!self::$_instance) { self::$_instance = new self(); } return self::$_instance; } }


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn