在Win7 中為php擴充配置Xcache_php執行個體

來源:互聯網
上載者:User

XCache 工程由 mOo 領隊, 他也是 Lighttpd 的開發成員之一. Lighttpd 是最快的 Web 服務器應用程式之一, 並且超越 Apache 以及許多其他 Web 服務器. XCache 努力達到類似的效果.

目前最新的版本為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
; 對於 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;
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.