您的位置:首页 > 数据库 > Memcache

php扩展memcached的安装

2013-01-16 10:48 281 查看
一,为什么要装memcached扩展memcached的1.2.4及以上增加了CAS(Check and Set)协议,对于同一key的多进行程的并发处理问题。这种情况其实根数据库很像,如果同时有几个进程对同一个表的同一数据进行更新的话,那会不会打架呢,哈哈。数据库里面可以锁定整张表,也可以锁定表里面一 行的功能,其实memcached加入的CAS根这个差不多。php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached二,查看memcahced的版本信息telnet 127.0.0.1 12000stats你会看到有以下信息STAT pid 15322STAT uptime 1885STAT time 1279455772STAT version 1.2.8STAT pointer_size 32如果版本过低,考虑重新装一下退出telnet ,ctrl + ] 然后在按q就行了。三,安装所要软件wget http://launchpad.net/libmemcached/1.0/0.42/+download/libmemcached-0.42.tar.gz wget http://pecl.php.net/get/memcached-1.0.2.tgz memcached的官方网站 http://www.memcached.org/ 四,安装libmemcachedtar zxvf libmemcached-0.42.tar.gzcd libmemcached-0.42./configure --prefix=/usr/local/libmemcached --with-memcachedmake && make install安装要注意的问题:1, 安装过程中不要忘了,--with-memcached,不然会提示你checking for memcached... noconfigure: error: "could not find memcached binary"2,你的memcached是不是1.2.4以上的,如果不是会提示你clients/ms_thread.o: In function `ms_setup_thread':/home/zhangy/libmemcached-0.42/clients/ms_thread.c:225: undefined reference to `__sync_fetch_and_add_4'clients/ms_thread.o:/home/zhangy/libmemcached-0.42/clients/ms_thread.c:196: more undefined references to `__sync_fetch_and_add_4' followcollect2: ld returned 1 exit statusmake[2]: *** [clients/memslap] Error 1make[2]: Leaving directory `/home/zhangy/libmemcached-0.42'解决办法是--disable-64bit CFLAGS="-O3 -march=i686",如果不用这个64位的long型数据,我想php扩展memcached,memcache也就没什么区别了,装memcached也就没什么意思了。五,php的扩展memcached的安装tar zxvf memcached-1.0.2.tar.gzcd memcached-1.0.2/usr/local/php/bin/phpize./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached./configure --prefix=/usr/local/phpmemcached --with-memcachedmake && make installvi /usr/local/php/lib/php.ini加上extension=memcached.so重起一下服务就可以了。32位场合./configure -disable-64bit CFLAGS="-O3 -march=i686"编译错误:libmemcached/auto.cc: In function 'memcached_return_t text_incr_decr(memcached_server_st*, bool, const char*, size_t, uint64_t, bool)':libmemcached/auto.cc:73: error: expected `)' before 'PRIu64'In file included from ./libmemcached/common.h:72,from ./libmemcached/csl/common.h:40,from libmemcached/csl/context.cc:38:./libmemcached-1.0/memcached.h:46:27: error: tr1/cinttypes: No such file or directory对策:libmemcached-1.0.2 版本以上升级编译器版本# yum install gcc44 gcc44-c++ libstdc++44-devel# export CC=/usr/bin/gcc44# export CXX=/usr/bin/g++44# ./configure

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: