设为首页 收藏本站
查看: 836|回复: 0

[经验分享] memcache及php之memcached的扩展

[复制链接]

尚未签到

发表于 2018-12-20 10:53:30 | 显示全部楼层 |阅读模式
  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
  libevent:  http://www.monkey.org/~provos/libevent-2.0.10-stable.tar.gz

  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)下载包的支持:
  libmemcached:http://launchpad.net/libmemcached/1.0/0.46/+download/libmemcached-0.46.tar.gz
  php的memcached扩展:http://pecl.php.net/get/memcached-1.0.2.tgz
  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模块.




  二、rpm包的安装方式

1.服务器端
  rpm包下载地址:
  memcached: ftp://ftp.pbone.net/mirror/apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/memcached-1.4.5-1.el5.rf.x86_64.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.客户端
  libmemcached: ftp://ftp.pbone.net/mirror/ftp.pramberger.at/systems/linux/contrib/rhel5/archive/x86_64/libmemcached-0.43-1.el5.pp.x86_64.rpm
  php的memcachd扩展包:
  http://pkgs.org/centos-5-rhel-5/centalt-x86_64/php-pecl-memcached-1.0.2-3.el5.x86_64.rpm.html#download
  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  退出...
  源码包安装完全可以参考这位仁兄的:http://bardo.iteye.com/blog/914110 写的很详细。
  或者http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=3697&extra=page%3D1%26filter%3Dtypeid%26typeid%3D49%26typeid%3D49




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-653529-1-1.html 上篇帖子: 【资料整理】php通过yum webtatic安装 下篇帖子: 编译php扩展xsl
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表