程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php5.3安裝libmemcached 擴展方法與簡單實例

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

編輯:關於PHP編程

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

 代碼如下 復制代碼     wget https://launchpad.net/libmemcached/1.0/0.53/+download/libmemcached-0.53.tar.gz
    tar xvfz libmemcached-0.53.tar.gz
    cd libmemcached-0.53
    ./configure --prefix=/opt/libmemcached
    make && make install


安裝php擴展

 代碼如下 復制代碼

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


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

最後一步,修改php.ini,加上 extension=memcached.so

與面我們己安裝好了來看看簡單的實例

 代碼如下 復制代碼


#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     if(rc==MEMCACHED_SUCCESS)
30     {
31         cout<<"Save data:"<<value<<" sucessful!"<<endl;
32     }
33
34     //Get data
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
41     //Delete data
42     rc=memcached_delete(memc,key.c_str(),key_length,expiration);
43     if(rc==MEMCACHED_SUCCESS)
44     {
45         cout<<"Delete key:"<<key<<" sucessful!"<<endl;
46     }
47
48     //free
49     memcached_free(memc);
50     return 0;
51 }
52
53

編譯:g++ -o testmemcached testmemcached.cpp -lmemcached
運行:./testmemcached
結果:Save data:value sucessful!
      Get value:value sucessful!
      Delete key:key sucessful!


注意事項

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved