<em id="hanht"></em>

    <dd id="hanht"></dd>

    <em id="hanht"><acronym id="hanht"></acronym></em>
    
    <button id="hanht"></button>
    <rp id="hanht"><object id="hanht"><blockquote id="hanht"></blockquote></object></rp><em id="hanht"></em>

    首頁 > 運營 > 幫助中心 > 正文

    php5.3安裝libmemcached 擴展方法與簡單實例

    2020-09-18 19:30:41
    字體:
    來源:轉載
    供稿:網友

    libmemcached 是一個 memcached 的庫,客戶端庫,C 和 C++ 語言實現的客戶端庫,具有低內存占用率、線程安全、并提供對memcached功能的全面支持,它還采用 多種命令行工具:memcat,memflush,memrm, memstat,并memslap(負載代),程序庫一直在設計,讓不同的散列方法對密鑰,分割的鑰匙,并使用統一的散列分配.

    基于libmemcached的php memcache client有很多優勢.

    •hash一致性存儲

    •multi get/set

    •自動把key hash 為int,避開了memcache key字符串默認小于255Byte的限制,好久沒有配置服務器,一直以為libmemcached的php memcached 已經納入基本安裝包了,到頭來還需要自己編譯,整個安裝過程很多暗坑,嘗試了幾次才成功.

    安裝分兩步:

    •安裝libmemcached,目標是so和header文件

    •安裝memcachedphp extensions

    libmemcaced 分為兩大版本0.x和1.x,1.x的版本從2011-09-28開始,編譯很麻煩,需要gcc4.0以上的專門配置,compile無比慢,0.x版本就簡單很多,最高版本是0.53,所以選擇安裝0.53.

    極品總是成對出現,php的memcahed也從2.1.0開始,要求libmemcached 必須是1.0.x版本,libmemcaced我用的0.53,那php-memcahed 就選擇2.0.0,開源軟件的版本維護是一團爛帳.

    安裝libmemcached,代碼如下:

    1. wget https://launchpad.net/libmemcached/1.0/0.53/+download/libmemcached-0.53.tar.gz 
    2.     tar xvfz libmemcached-0.53.tar.gz 
    3.     cd libmemcached-0.53 
    4.     ./configure --prefix=/opt/libmemcached 
    5.     make && make install 

    安裝php擴展,代碼如下:

    1. wget http://pecl.php.net/get/memcached-2.0.0.tgz 
    2. tar zvxf memcached-2.0.0.tgz 
    3. cd memcached-2.0.0/ 
    4. ./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/opt/libmemcached/ 
    5. make && make install 

    make install 是把memcached.so 安裝到 ${php install dir}/extensions/no-debug-non-zts-20090626/,這個目錄隨著php的版本不同而不同.

    最后一步,修改php.ini,加上 extension=memcached.so,與我們己安裝好了來看看簡單的實例,代碼如下:

    1. #include <iostream> 
    2.  #include <string> 
    3.  #include <libmemcached/memcached.h> 
    4.   
    5.  using namespace std; 
    6.   
    7.  int main(int argc,char *argv[]) 
    8.  { 
    9.      //connect server 
    10.      memcached_st *memc; 
    11.      memcached_return rc; 
    12.      memcached_server_st *server; 
    13.      time_t expiration; 
    14.      uint32_t  flags; 
    15.   
    16.      memc = memcached_create(NULL); 
    17.      server = memcached_server_list_append(NULL,"localhost",11211,&rc); 
    18.      rc=memcached_server_push(memc,server); 
    19.      memcached_server_list_free(server); 
    20.   
    21.      string key = "key"
    22.      string value = "value"
    23.      size_t value_length = value.length(); 
    24.      size_t key_length = key.length(); 
    25.   
    26.   
    27.      //Save data 
    28.      rc=memcached_set(memc,key.c_str(),key.length(),value.c_str(),value.length(),expiration,flags); 
    29. 29     if(rc==MEMCACHED_SUCCESS) 
    30. 30     { 
    31. 31         cout<<"Save data:"<<value<<" sucessful!"<<endl; 
    32. 32     } 
    33. 33  
    34. 34     //Get data 
    35. 35     char* result = memcached_get(memc,key.c_str(),key_length,&value_length,&flags,&rc); 
    36.      if(rc == MEMCACHED_SUCCESS) 
    37.      { 
    38.          cout<<"Get value:"<<result<<" sucessful!"<<endl; 
    39.      }  
    40.      //Delete data 
    41.      rc=memcached_delete(memc,key.c_str(),key_length,expiration); 
    42.      if(rc==MEMCACHED_SUCCESS) 
    43.      { 
    44.          cout<<"Delete key:"<<key<<" sucessful!"<<endl; 
    45.      } //開源代碼Cuoxin.com 
    46.      //free 
    47.      memcached_free(memc); 
    48.      return 0; 
    49.  } 

    編譯:g++ -o testmemcached testmemcached.cpp -lmemcached

    運行:./testmemcached

    結果:Save data:value sucessful!Get value:value sucessful!Delete key:key sucessful!

    注意事項:

    需要注意的是,libmemcached 不是 libmemcache,它們是兩個不同的客戶端庫,前者現在的開發比較活,后者已經有很長時間沒有更新了.

    memcached 是一個高性能、分布式的內存對象緩存系統,通過內存的數據緩存來降低對數據庫的訪問,從而提高動態內容應用網站的速度,memcached 官方開發釋放出來的,只是應用的服務器端程序,它發布了服務器端的連接讀寫協議,客戶端的實現,則根據動態內容應用網站使用的動態腳本的不同,而有多種,具體列表,可查看官方網站.

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    一级特黄大片欧美久久久久_一本一道久久综合狠狠老_JLZZ日本人年轻护士_欧美男男作爱VIDEOS可播放
      <em id="hanht"></em>

      <dd id="hanht"></dd>

      <em id="hanht"><acronym id="hanht"></acronym></em>
      
      <button id="hanht"></button>
      <rp id="hanht"><object id="hanht"><blockquote id="hanht"></blockquote></object></rp><em id="hanht"></em>