Linux 下php擴展memcache的相關步驟以及疑難解析

一、安裝環境

    CentOS Release 5.3

    httpd-2.2.9

    php-5.2.6

 

二、所需軟件

    libevent-1.4.9-stable.tar.gz (http://monkey.org/~provos/libevent/)
    memcache-2.2.5.tar.gz (http://pecl.php.net/package/memcache)
    memcached-1.2.7.tar.gz (http://www.danga.com/memcached/)

 

 三、安裝及配置

1、安裝libevent

    # tar xzvf libevent-1.4.9-stable.tar.gz

    # cd libevent-1.4.9-stable

    # ./configure --prefix=/usr

    # make

    # make install

 

2、測試 libevent 是否安裝成功

    # ls  /usr/lib |grep libevent
    libevent-1.1a.so.1
    libevent-1.1a.so.1.0.2
    libevent-1.4.so.2
    libevent-1.4.so.2.1.2
    libevent.a
    libevent_core-1.4.so.2
    libevent_core-1.4.so.2.1.2
    libevent_core.a
    libevent_core.la
    libevent_core.so
    libevent_extra-1.4.so.2
    libevent_extra-1.4.so.2.1.2
    libevent_extra.a
    libevent_extra.la
    libevent_extra.so
    libevent.la
    libevent.so

 

注意:版本不同,可能文件列表不同。

 

3、安裝 memcached,同時需要安裝中指定 libevent 的安裝位置

    # tar xzvf memcached-1.2.7.tar.gz

    # cd memcached-1.2.7

    # ./configure --with-libevent=/usr

    # make

    # make install

 

注意:安裝完成後,會把 memcached 自動放到 /usr/local/bin/memcached 。

 

4、測試是否成功安裝 memcached

    # ls /usr/local/bin/memcached

    -rwxr-xr-x 1 root root 123483 11-28 15:07 /usr/local/bin/memcached

 

 

5、安裝 memcache 的PHP擴展

①安裝PHP的 memcache 擴展

    # tar xzvf memcache-2.2.5.tgz

    # cd memcache-2.2.5

    # /usr/local/php/bin/phpize

    Configuring for:
    PHP Api Version:         20041225
    Zend Module Api No:      20060613
    Zend Extension Api No:   220060519

   

    # ./configure --enable-memcache -with-php-config=/usr/local/php/bin/php-config --with-zlib-dir

    # make

    # make install

    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

 

②把 php.ini 中的 extension_dir = "./" 修改爲

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"

 

③在 php.ini 中載入 memcache 擴展: extension=memcache.so

 

 

四、memcached 的基本配置

1、啓動 memcache 的服務端:

    # memcached -d -m 10 -u root -l 127.0.0.1 -p 12006 -c 256 -P /tmp/memcached.pid

 

參數說明:  

    -d選項:以守護程序(daemon)方式運行 memcached,
    -m選項:是分配給 memcached 使用的內存大小,單位是MB,我這裏是10MB。
    -u選項:運行 memcache 的用戶,我這裏指定 root。
    -l 選項:監聽的服務器IP地址,如果有多個地址的話,我這裏指定了服務器的IP地址127.0.0.1,
    -p選項:設置 memcache 監聽的端口,我這裏設置了12006,最好是1024以上的端口。默認端口爲1211,所以餓可以不設置此參數。
    -c選項:最大運行的併發連接數,默認是1024,我這裏設置了256,按照你服務器的負載量來設定,
    -P選項:設置保存 memcache 的pid文件,我這裏是保存在 /tmp/memcached.pid

 

2、結束 memcache 進程,執行如下命令: 

     # kill `cat /tmp/memcached.pid`

 

備註:也可以啓動多個守護進程,不過端口不能重複。

 

 

 五、memcache 環境測試

運行下面的 php 文件,如果有輸出 This is a test!,就表示環境搭建成功。

<?php
  $mem = new Memcache;
  $mem->connect("127.0.0.1", 12006);
  $mem->set('key', 'This is a test!', 0, 60);
  $val = $mem->get('key');
  echo $val;
?>

 

 

著名的PHPCMS同樣支持 memcached 擴展:

 

 <?php 
//MemCache服務器配置
//define('MEMCACHE_HOST', 'localhost'); //MemCache服務器主機 
//define('MEMCACHE_PORT', 11211); //MemCache服務器端口 
//define('MEMCACHE_TIMEOUT', 1); //S,MemCache服務器連接超時 

class cache 

  var $memcache; 
  function __construct() 
  { 
    $this->memcache = &new Memcache; 
    $this->memcache->pconnect(MEMCACHE_HOST, MEMCACHE_PORT, MEMCACHE_TIMEOUT); 
  } 

  function cache() 
  { 
    $this->__construct(); 
  } 

  function get($name) 
  { 
    return $this->memcache->get($name); 
  } 

  function set($name, $value, $ttl = 0) 
  { 
    return $this->memcache->set($name, $value, 0, $ttl); 
  } 

  function rm($name) 
  { 
    return $this->memcache->delete($name); 
  } 

  function clear() 
  { 
    return $this->memcache->flush(); 
  } 


?>

 

六、參考資料

對Memcached有疑問的朋友可以參考下列文章:
Linux下的Memcache安裝:http://www.ccvita.com/257.html
Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建勝過Apache十倍的Web服務器: http://blog.s135.com/nginx_php_v5/

 

 

  

 主要摘自:(LixiPHP)http://blog.lixiphp.com/centos-linux-memcache-nginx-php-install/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章