Linux 下php扩展memcache的相关步骤以及疑难解析
一、安装环境
??? CentOS Release 5.3
??? httpd-2.2.9
??? php-5.2.6
?
二、所需软件
??? libevent-1.4.9-stable.tar.gz (http://monkey.org/~provos/libevent/)
??? memcache-2.2.5.tar.gz (http://pecl.php.net/package/memcache)
??? memcached-1.2.7.tar.gz (http://www.danga.com/memcached/)
?
?三、安装及配置
1、安装libevent
??? # tar xzvf libevent-1.4.9-stable.tar.gz
??? # cd libevent-1.4.9-stable
??? # ./configure --prefix=/usr
??? # make
??? # make install
?
2、测试 libevent 是否安装成功
??? #?ls? /usr/lib |grep libevent
??? libevent-1.1a.so.1
??? libevent-1.1a.so.1.0.2
??? libevent-1.4.so.2
??? libevent-1.4.so.2.1.2
??? libevent.a
??? libevent_core-1.4.so.2
??? libevent_core-1.4.so.2.1.2
??? libevent_core.a
??? libevent_core.la
??? libevent_core.so
??? libevent_extra-1.4.so.2
??? libevent_extra-1.4.so.2.1.2
??? libevent_extra.a
??? libevent_extra.la
??? libevent_extra.so
??? libevent.la
??? libevent.so
?
注意:版本不同,可能文件列表不同。
?
3、安装 memcached,同时需要安装中指定 libevent 的安装位置
??? # tar xzvf memcached-1.2.7.tar.gz
??? # cd memcached-1.2.7
??? # ./configure --with-libevent=/usr
??? # make
??? # make install
?
注意:安装完成后,会把 memcached 自动放到 /usr/local/bin/memcached 。
?
4、测试是否成功安装 memcached
??? # ls /usr/local/bin/memcached
??? -rwxr-xr-x 1 root root 123483 11-28 15:07 /usr/local/bin/memcached
?
?
5、安装 memcache 的PHP扩展
①安装PHP的 memcache 扩展
??? # tar xzvf memcache-2.2.5.tgz
????# cd memcache-2.2.5
??? # /usr/local/php/bin/phpize
??? Configuring for:
??? PHP Api Version:???????? 20041225
??? Zend Module Api No:????? 20060613
??? Zend Extension Api No:?? 220060519
???
??? # ./configure --enable-memcache -with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
??? # make
??? # make install
??? Installing shared extensions:???? /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
?
②把 php.ini 中的 extension_dir = "./" 修改为
??? extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
?
③在 php.ini 中载入 memcache 扩展: extension=memcache.so
?
?
四、memcached 的基本配置
1、启动 memcache 的服务端:
??? # memcached -d -m 10 -u root -l 127.0.0.1 -p 12006 -c 256 -P /tmp/memcached.pid
?
参数说明:??
??? -d选项:以守护程序(daemon)方式运行 memcached,
??? -m选项:是分配给 memcached 使用的内存大小,单位是MB,我这里是10MB。
??? -u选项:运行 memcache 的用户,我这里指定 root。
??? -l 选项:监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址127.0.0.1,
??? -p选项:设置 memcache 监听的端口,我这里设置了12006,最好是1024以上的端口。默认端口为1211,所以饿可以不设置此参数。
??? -c选项:最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
??? -P选项:设置保存 memcache 的pid文件,我这里是保存在 /tmp/memcached.pid
?
2、结束 memcache 进程,执行如下命令:?
??? ?# kill `cat /tmp/memcached.pid`
?
备注:也可以启动多个守护进程,不过端口不能重复。
?
?
?五、memcache 环境测试
运行下面的 php 文件,如果有输出 This is a test!,就表示环境搭建成功。
<?php
? $mem = new Memcache;
? $mem->connect("127.0.0.1", 12006);
? $mem->set('key', 'This is a test!', 0, 60);
? $val = $mem->get('key');
? echo $val;
?>
?
?
著名的PHPCMS同样支持 memcached 扩展:
?
?<?php?
//MemCache服务器配置
//define('MEMCACHE_HOST', 'localhost'); //MemCache服务器主机?
//define('MEMCACHE_PORT', 11211); //MemCache服务器端口?
//define('MEMCACHE_TIMEOUT', 1); //S,MemCache服务器连接超时?
class cache?
{?
? var $memcache;?
? function __construct()?
? {?
??? $this->memcache = &new Memcache;?
??? $this->memcache->pconnect(MEMCACHE_HOST, MEMCACHE_PORT, MEMCACHE_TIMEOUT);?
? }?
? function cache()?
? {?
??? $this->__construct();?
? }?
? function get($name)?
? {?
??? return $this->memcache->get($name);?
? }?
? function set($name, $value, $ttl = 0)?
? {?
??? return $this->memcache->set($name, $value, 0, $ttl);?
? }?
? function rm($name)?
? {?
??? return $this->memcache->delete($name);?
? }?
? function clear()?
? {?
??? return $this->memcache->flush();?
? }?
}?
?>
?
六、参考资料
对Memcached有疑问的朋友可以参考下列文章:
Linux下的Memcache安装:http://www.ccvita.com/257.html
Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器: http://blog.s135.com/nginx_php_v5/
?
?
??
?主要摘自:(LixiPHP)http://blog.lixiphp.com/centos-linux-memcache-nginx-php-install/
?
?