LINUX系统安装PHP的memcached扩展
说明:由于一些开源网址有所变化,以及版本也有所变化,所以,这里给出了本年度最新下载网址,以及最新的版本。
本安装文档所用的操作系统是CentOS.
1、为什么要装memcached扩展
memcached的1.2.4及以上增加了CAS(Check and Set)协议,对于同一key的多进行程的并发处理问题。这种情况其实根数据库很像,如果同时有几个进程对同一个表的同一数据进行更新的话,那会不会打架呢。数据库里面可以锁定整张表,也可以锁定表里面一行的功能,其实memcached加入的CAS与此差不多。
php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached 扩展是基于libmemcached,所以要先安装libmemcached。但安装之前,先要确认,是否有memcached服务端。
可用命令:
whereis memcached
如果能到,则要检查版本。
2、查看memcahced的版本信息
telnet127.0.0.112000
stats
你会看到有以下信息
STAT pid15322
STAT uptime1885
STAT time1279455772
STAT version1.2.8
STAT pointer_size32
如果版本过低(低于memcached1.2.4),考虑重新装一下
退出telnet,ctrl+]然后在按q就行了。
php的memcache扩展和memcached扩展的服务器端程序均是memcached.所以,无论是安装memcache扩展还是memcached扩展,均需要先安装libevent。关于memcache扩展和memcached扩展二者的区别,第一可以参考PHP文档,其二,网上也有详细讲解。这里不多讲。以下是安装步骤:
3、下载所需软件:
libevent是:/~provos/libevent/
最新版是2.0.10下载:
curl-O /~provos/libevent-2.0.
memcached的官方网址是:/
目前最新版本是1.4.5。
下载:
wget lecode/files/memcached-1.4.
此外:memcached扩展还支持igninary。这是一个快速高效的序列化库。官方网址是:
opensource.dynamoid/
当前最新版是 1.1.1,下载网址是:
wget opensource.dynamoid/igbinary-1.1.
libmemcached是(注意:PHP文档中的网址己不可用,很久未更新了): /libMemcached.html
下载网址是,这里可以查看最新版:
launchpad/libmemcached/+download
最新版本是0.46
wget
launchpad/libmemcached/1.0/0.46/+download/libmemcached-0.
虽然PHP默认安装了JSON,但是,memcached如果要支持igbinary,则需要php_json 的头文件。所以,要下载pecl的json-1.(具体根据你PHP的版本而定,可以用PHPINFO查看一下当前JSON的版本)
wget pecl.php/get/json-1.
最后则是pecl的memcached,这个直接查php文档中的网址,最新版本是1.0.2网址:pecl.php.n
et/package/memcached
下载:
wget pecl.php/get/memcached-1.
4、memcached服务端安装:
如果系统中没有memcached服务端或版本太低,则需要安装。
(1)安装libevent
tar xvfz libevent-2.0.
cd libevent-2.0.10-stable
./configure&&make
make install
这里选用的是默认路径安装,安装后,libevent将会是在/usr/local/lib/目录下
(2)安装memcached服务端
tar zxvf memcached-1.4.
cd memcached-1.4.5
./configure--with-libevent=/usr/local/lib
make
make install
这里也是默认安装,如果上一安装指定了--prefix,那么,这里需要用--with-libevent=指定到相同的路径。
服务端安装结果测试:
/usr/local/bin/memcached-d-m10-p11211-u root
参数说明:
-d:(run as a daemon)选项是启动一个守护进程
-m:(max memory to use for items in megabytes(default:64MB))是分配给Memcache使用的内存数量,单位是MB,我这里是100MB,
-u:(assume identity of<username>(only when run as root))是运行Memcache的用户,我这里是root,
-l:(interface to listen on)是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址127.0.0.1,
-p:是设置Memcache监听的端口,这里设置了11211,最好是1024以上的端口,
-c:选项是最大运行的并发连接数,默认是1024,这里设置了256,根据服务器的负载量来设定,
-P:(save PID in<file>,only used with-d option)是设置保存Memcache的pid文件,这里是保存在/tmp/memcached.pid
注:如果启动时出现“memcached:error while loading shared libraries: libevent-2.0.so.5:cannot open
shared object file:No such file or directory”之类的信息,表示memcached不到libevent的位置
所以,请先使用whereis libevent得到位置,然后连接到memcached所寻的路径
首先查看,libevent在哪里
[root@localhost tools]#whereis libevent
libevent:/usr/local/lib/libevent.la/usr/local/lib/libevent.so/usr/local/lib/libevent.a
然后,再看memcached从哪里它
[root@localhost tools]#LD_DEBUG=libs memcached-v2>&1>/dev/null|less
可以看到:是/usr/lib/libevent-2.0.so.5,所以,创建软链
[root@localhost tools]#ln-s/usr/local/lib/libevent-2.0.so.5/usr/lib/libevent-2.0.so.5
再次启动,一定OK!关闭memcached:pkill memcached
5、igninary安装:
php手机版下载在做下面操作之前,先查一下phpize和php-config的路径
whereis phpize
whereis php-config
然后,下面的命令中的路径,参考以上的结果。
tar xvfz igbinary-1.1.
cd igbinary-1.1.1
/usr/bin/phpize
./configure--with-php-config=/usr/bin/php-config--enable-igbinary
make&&make install
修改配置:
方法1:
vi/usr/local/php/lib/php.ini
加上extension=igbinary.so重起一下服务就可以了。
方法2:(我个人喜好这一种方法)
最好的做法是在/etc/php.d/添加一个文件:igbinary.ini
vi/etc/php.d/igbinary.ini
写入:extension=igbinary.so
注,igbinary提供了很好且快速的序列化函数。这是让PHP可以使用inbinary的函数,如果你不需要,这个配置修改可以不做。
6、libmemcached安装
tar zxvf libmemcached-0.
cd libmemcached-0.46
./configure--prefix=/usr/local/libmemcached--with-memcached
如果是32位系统:
./configure--prefix=/usr/local/libmemcached--with-memcached--disable-64bit CFLAGS="-O3-march=i686"
make&&make install
安装要注意的问题:
(1),安装过程中不要忘了,--with-memcached,不然会提示你
checking for memcached…no
configure:error:“could not find memcached binary”
(2),你的memcached是不是1.2.4以上的,64位系统,如果不是会提示你
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′follow
collect2:ld returned1exit status
make[2]:***[clients/memslap]Error1
make[2]:Leaving directory`/home/zhangy/libmemcached-0.42′
解决办法是--disable-64bit CFLAGS=”-O3-march=i686″。
(3),--prefix=/usr/local/libmemcached也必须加上,否则libmemcached没有自己的目录,不好管理。
7、php的扩展memcached的安装
先要处理json头文件:
tar zxvf json-1.2.
cd/usr/include/php/ext#这是默认安装路径。如果你PHP自定义安装,则要到其它路径
mkdir json
cd./json
cp/usr/local/src/json-1.2.1/php_json.h./php_json.h
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论