https://pecl.php.net/package/memcache
http://memcached.org/files/
一、在Linux系统上安装Memcache服务,要先安装libevent库
1.安装libevent库
wget -P /soft http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
cd soft
tar zxf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable/
./configure --prefix=/usr/local/lib
make && make install
2.安装memcache
wget -P /soft http://memcached.org/files/memcached-1.4.20.tar.gz
tar zxf memcached-1.4.20.tar.gz
cd memcached-1.4.20/
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/lib
make && make install
安装完成
修改memcache为开机自启动
vi /etc/rc.local
添加以下代码,并保存
/usr/local/memcached/bin/memcached -p 11211 -U 0 -d -r -u root -m 2040 -c 1024 -t 4
手动启动memcache命令
/usr/local/memcached/bin/memcached -p 11211 -U 0 -d -r -u root -m 2040 -c 1024 -t 4
测试memcache是否启动
telnet 127.0.0.1 11211
可以看到如下代码,说明memcache服务已经启动
Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.
二、安装php的Memcached扩展,要先安装libmemcached这个支持库。
1、安装libmemcached
1.1下载wget -P /usr/local/libmemcached
wget -P /soft https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
-P /soft :指定把安装包下载到soft目录
1.2 安装
cd soft
tar -zxf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached --with-memcached
make && make install
完成安装
2.安装memcached
2.1下载
wget -P /soft http://pecl.php.net/get/memcached-2.2.0.tgz
2.2 安装
cd soft
tar -zxf memcached-2.2.0.tgz
cd memcached-2.2.0 (进入安装文件夹)
cd php-memcached (再进入到文件夹,在这个文件夹下进行下一步的phpize命令)
使用phpize命令生成一个configure文件,phpize会根据系统信息,生成相应的configure文件,
/usr/local/apache2/bin/phpize
编译,php-config文件的路径,要根据实际路径修改
./configure --with-php-config=/usr/local/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
安装
make && make install
成功安装之后,会在php扩展目录下生成memcached.so
3.配置php.ini文件
extension=memcached.so
配置完要重启apache服务器 /usr/local/apache2/bin/apachectl stop /usr/local/apache2/bin/apachectl start
phpinfo()输出memcached支持结果
三、测试案例
<?php $memcachehost="127.0.0.1"; $memcacheport=11211; $memcache = new Memcached; $memcache->addServer($memcachehost,$memcacheport); $key="members2"; if(!$memcache->get($key)){ $mysqli=new mysqli('127.0.0.1','root','','landy'); $mysqli->query('SET NAMES UTF8'); $sql="select * from members"; $res=$mysqli->query($sql); while($row=mysqli_fetch_array($res)){ $arr[]=$row; } $str="mysql"; $memcache->set($key,serialize($arr)); $data=$arr; } else{ $str="memcache"; $data_mem=$memcache->get($key); $data=unserialize($data_mem); } echo $str."<br/>"; foreach($data as $key=>$val){ echo $val['wxname']."<br/>"; }