加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-06-21 14:50:01 所属栏目:PHP教程 来源:互联网
导读:libmemcached 是一个 memcached 的库,客户端库,C 和 C++ 语言实现的客户端库,具有低内存占用率、线程安全、并提供对memcached功能的全面支持,它还采用 多种命令行工具:memcat,memflush,memrm, memstat,并memslap(负载代),程序库一直在设计,让不同的散列方
  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>
   #include <string>
   #include <libmemcached/memcached.h>
    
   using namespace std;
    
   int main(int argc,char *argv[])
   {
       //connect server
       memcached_st *memc;
       memcached_return rc;
       memcached_server_st *server;
       time_t expiration;
       uint32_t  flags;
    
       memc = memcached_create(NULL);
       server = memcached_server_list_append(NULL,"localhost",11211,&rc);
       rc=memcached_server_push(memc,server);
       memcached_server_list_free(server);
    
       string key = "key";
       string value = "value";
       size_t value_length = value.length();
       size_t key_length = key.length();
    
    
       //Save data
       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);
       if(rc == MEMCACHED_SUCCESS)
       {
           cout<<"Get value:"<<result<<" sucessful!"<<endl;
       }  
       //Delete data
       rc=memcached_delete(memc,key.c_str(),key_length,expiration);
       if(rc==MEMCACHED_SUCCESS)
       {
           cout<<"Delete key:"<<key<<" sucessful!"<<endl;
       } //开源代码phpfensi.com
       //free
       memcached_free(memc);
       return 0;
   }
  编译:g++ -o testmemcached testmemcached.cpp -lmemcached
 
  运行:./testmemcached
 
  结果:Save data:value sucessful!Get value:value sucessful!Delete key:key sucessful!
 
  注意事项:
 
  需要注意的是,libmemcached 不是 libmemcache,它们是两个不同的客户端库,前者现在的开发比较活,后者已经有很长时间没有更新了.
 
  memcached 是一个高性能、分布式的内存对象缓存系统,通过内存的数据缓存来降低对数据库的访问,从而提高动态内容应用网站的速度,memcached 官方开发释放出来的,只是应用的服务器端程序,它发布了服务器端的连接读写协议,客户端的实现,则根据动态内容应用网站使用的动态脚本的不同,而有多种,具体列表,可查看官方网站.
 
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读