网站地图    收藏   

主页 > php专栏 > php环境搭建 >

php5.3安装libmemcached 扩展方法与简单实例

来源:未知    时间:2014-11-24 23:50 作者:xxadmin 阅读:

[导读] libmemcached 是一个 memcached 的库,客户端库,C 和 C++ 语言实现的客户端库,具有低内存占用率、线程安全、并提供对memcached功能的全面支持,它还采用 多种命令行工具:memcat,memflush,memrm, memsta...

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.      } //开源代码phpfensi.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 官方开发释放出来的,只是应用的服务器端程序,它发布了服务器端的连接读写协议,客户端的实现,则根据动态内容应用网站使用的动态脚本的不同,而有多种,具体列表,可查看官方网站.

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论