26
2024
04
16:12:57

php加载memcached,memcache及php之memcached的扩展

memcached是高性能的,分布式的内存对象缓存系统,在动态应用中减少数据库负载,提升访问速度。php关于memcached的扩展方式有两种:一种memcache,一种memcached.....

为什么要装php关于memcached扩展

memcached的1.2.4及以上增加了CAS(Check and Set)协议,对于同一key的多进行程的并发处理问题。这种情况其实根数据库很像,如果同时有几个进程对同一个表的同一数据进行更新的话,那会不会打架呢。数据库里面可以锁定整张表,也可以锁定表里面一行的功能,其实memcached加入的CAS与此差不多。

php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached。

理论和原理就不说了,百度谷歌一堆一堆的...

因后期升级方便,我的生产环境全部使用rpm包,本来想将php的memcached扩展源码包下载自己编译成rpm包,无奈源码包解压无spec编译模板,网上关于此模板也比较少,连src.rpm格式也没有。只好找现成的rpm 包安装,给大家一个参考,测试是OK的...

有一点不要搞混了,服务端的memcached包和php的扩展memcached包是不一样的,注意下,目前服务端的memcached官网最新版是1.4.13,php的扩展memcached包最新版是2.0.1.

一、源码的安装方式

1.服务端安装

1)下载包的支持:

memcached: http://memcached.org/   我的生产环境目前使用版本1.4.5

2)libevent安装:如有则无须安装

tar zvxf libevent-2.0.10-stable.tar.gz

cd libevent-2.0.10-stable

./configure     默认路径安装,默认目录/usr/local/lib

make && make install

3) memcached服务端安装

tar zvxf memcached-1.4.5.tar.gz

cd memcached-1.4.5

./configure--with-libevent=/usr/local/lib

make && make install

默认安装,如果libevent指定--prefix安装到其它路么,那么这里相应路径也需更改.

启动:/usr/local/bin/memcached  -d  -m 512  -p  11211 -u root

-d启动守护进程,-m设置memcache使用的内存大小,-p 端口默认11211  -u以root用户启动进程.

2.客户端安装:

1)下载包的支持:

2)libmemcached的安装

tar zvxf libmemcached-0.46.tar.gz

cd libmemcached-0.46

./configure--prefix=/usr/local/libmemcached --with-memcached

make && make install

3)php的memcached扩展方式安装:

先检查phpize和php-config工具有没安装,如果没有直接yum install php-devel就行了...

找到安装位置

#which phpize

#which php-config

我的都是在/usr/bin/...  目录下   phpize是用来编译安装扩展库用的...

#tar zvxf memcached-1.0.2.tar.gz

#cd memcached-1.0.2

#/usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20090626

Zend Module Api No:      20090626

Zend Extension Api No:   220090626

注意libmemcached路径的指定跟前面的安装目录一致.

#./configure--prefix=/usr/local/phpmemcached --enable-memcached --with-php-config=/usr/local/php/bin/php-config--with-libmemcached-dir=/usr/local/libmemcached

#make  && make install

为了以防混淆,这里指定php的memcached扩展的安装路径/usr/local/phpmemcached,php-config文件按php安装路径查找

4)修改php的配置文件php.ini

加上模块extension=memcached.so   看看extension_dir指定的模块路径下是否有memcached.so文件.extension_dir一般是/usr/lib/php/modules/.....  如果没有看下是否在lib64下,ln -s做下软链接.如:

ln -s /usr/lib64/php/modules  /usr/lib/php/modules

5)重启httpd服务.

6)建个phpinfo测试页面,web看下是否已加载memcached模块.

phpinfo();

?>

二、rpm包的安装方式

1.服务器端

rpm包下载地址:

rpm -ivh memcached-1.4.5-1.el5.rf.x86_64.rpm

启动memcached服务同上.或者修改/etc/sysconfig/memcached

PORT="11211"

USER="nobody"

MAXCONN="1024"

CACHESIZE="512"

OPTIONS="-l 192.168.7.1"

启动/etc/init.d/memcached start 或service memcached start

2.客户端

php的memcachd扩展包:

3. 安装

直接rpm -ivh 包名..  顺序安装即可.

4.由于libmemcached rpm包编译时已经把memcached.so模块加载在/etc/php.d/memcache.ini 文件中,无须修改配置文件,直接重启httpd服务即可。

附:如源码安装过程中模块出错或找不到,可以which下包的路径,如

which vi

ldd vi  查看哪个模块not found

找到相应模块再做下软链接...  ln -s ....

三、memcached监控

可以自己写监控脚本,也可以使用网上开源的工具,这里介绍下memadmin,一个国人开发的.

1.安装简单×××后直接解压到apache默认访问目录如/var/www/html/memadmin,可直接修改其中的config.php文件来设置帐号密码.

2.web页面直接访问http://ip/memadmin/index.php 监控页面,添加被监控的memcached服务端IP,也可以监控多台.....

3.web页面操作简单或者memcached服务端直接telnet 127.0.0.1 11211查看状态

#stat

ctrl+]     q  退出...




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/5933.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: