PS:php连接memcached缓存服务器,现在有两种支持memcached的扩展,一个是memcache扩展,另一个是memcached扩展。memcache扩展是原生实现的,支持OO和非OO两套接口并存,而memcached扩展是使用libmemcached客户端库,只支持OO接口!
-
为什么要装memcached扩展
memcached的1.2.4及以上增加了CAS(Check and Set)协议,对于同一key的多进行程的并发处理问题。这种情况其实根数据库很像,如果同时有几个进程对同一个表的同一数据进行更新的话,那会不会打架呢,哈哈。数据库里面可以锁定整张表,也可以锁定表里面一 行的功能,其实memcached加入的CAS根这个差不多。
php的扩展memcache扩展,不支持cas,不能实现并发锁定,并且memcached扩展是基于libmemcached客户端库来实现的,libmemcached具有低内存占用率、线程安全、并提供对memcached功能的全面支持,所以优先使用memcached扩展。 -
libmemcached客户端库安装介绍
libmemcached 是一个 memcached 的客户端库,C 和 C++ 语言实现的客户端库,具有低内存占用率、线程安全、并提供对memcached功能的全面支持。它还采用 多种命令行工具: memcat , memflush , memrm , memstat ,并memslap (负载代)。程序库一直在设计,让不同的散列方法对密钥,分割的钥匙,并使用统一的散列分配。
libmemcached下载地址:https://launchpad.net/libmemcached/+downloadwget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz; tar -zxvf libmemcached-1.0.18.tar.gz; cd libmemcached-1.0.18; ./configure --prefix=/usr/local/libmemcached --with-memcached; make && make install #命令汇总 wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz; tar -zxvf libmemcached-1.0.18.tar.gz; cd libmemcached-1.0.18; ./configure --prefix=/usr/local/libmemcached --with-memcached; make && make install;cd ../
-
php安装memcached扩展
memcached下载地址:http://pecl.php.net/package/memcached
wget http://pecl.php.net/get/memcached-2.2.0.tgz; tar zxvf memcached-2.2.0.tgz; cd memcached-2.2.0; /usr/local/php/bin/phpize; ./configure -with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached; make && make install; #命令汇总 wget http://pecl.php.net/get/memcached-2.2.0.tgz; tar zxvf memcached-2.2.0.tgz; cd memcached-2.2.0; /usr/local/php/bin/phpize; ./configure -with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached; make && make install;cd ../; #上述安装完后会有类似这样的提示: Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
将memcached.so模块信息加入php.ini
vi /usr/local/php/etc/php.ini #增加 extension_dir = './' -> extension_dir = '/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/' extension=memcached.so