一、Memcache 应用一 php与memcache
1、PHP的memcache的客户端
PHP有两个memcache客户端:php memcache和php memcached。php memcache独立用php实现,是老客户端,从我们实践中已发现有多个问题,而且功能少,属性也可设置的少;php memcached是基于原生的c的libmemcached的扩展,更加完善,建议替换为php memcached。
2、PHP memcache的问题
(1).分布式问题
php memcache默认会自动切换实例,所以有时取到老数据,并且value飘忽不定
(2).高并发下稳定性问题
php memcache换成php memcached,在高并发下稳定下极大提高;
(3).秒超时间隔没法修改问题
php memcache客户端有个1秒超时间隔没法修改问题:bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )第三个参数本来可设置timeout,单位秒,但无法修改。
测试了以下三种修改timeout的方法都无效:
用memcache api Memcache::setServerParams不能修改;
改memcache 源代码vi php_memcache.h宏定义不能修改;
php.ini内这个配置:default_socket_timeout = 60对本timeout无效。
(4).memcache和memcached对比
注,PHP memcache这个老客户端在属性设置方面可设置的很少,出错码粒度很粗,出错后难以定位,而且功能欠缺一些,如下图:
注,综合上述建议大家使用php memcached。还有更多知识点请参考官方文
3、PHP 安装memcached扩展
[root@hpf-linux ~]# yum -y install gcc+ gcc-c++ 解决memcached的依赖关系需要安装libmemcached,注意这里最好安装1.0.16版本,我试过17、18版本一直无法装上:
[root@hpf-linux ~]# tar -xf libmemcached-1.0.16.tar.gz
[root@hpf-linux ~]# cd libmemcached-1.0.16
[root@hpf-linux libmemcached-1.0.16]# mkdir /usr/local/libmemcached
[root@hpf-linux libmemcached-1.0.16]# ./configure -prefix=/usr/local/libmemcached --with-memcached
[root@hpf-linux libmemcached-1.0.16]# make
[root@hpf-linux libmemcached-1.0.16]# make install 安装PHP memcached扩展:
[root@hpf-linux ~]# tar -xf memcached-2.2.0.tgz
[root@hpf-linux ~]# cd memcached-2.2.0
[root@hpf-linux memcached-2.2.0]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@hpf-linux memcached-2.2.0]# ./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
[root@hpf-linux memcached-2.2.0]# make && make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ 添加配置文件:
[root@hpf-linux ~]# vim /etc/php.d/memcached.ini
extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/memcached.so" 添加测试页:
[root@hpf-linux ~]# cat /www/a.com/index.php
浏览器测试:
4、PHP 安装memcache扩展
PECL 简介
PECL 的全称是 The PHP Extension Community Library ,是一个开放的并通过 PEAR(PHP Extension and Application Repository,PHP 扩展和应用仓库)打包格式来打包安装的 PHP 扩展库仓库。通过 PEAR 的 Package Manager 的安装管理方式,可以对 PECL 模块进行下载和安装。与以往的多数 PEAR 包不同的是,PECL 扩展包含的是可以编译进 PHP Core 的 C 语言代码,因此可以将 PECL 扩展库编译成为可动态加载的 .so 共享库,或者采用静态编译方式与 PHP 源代码编译为一体的方法进行扩展。PECL 扩展库包含了对于 XML 解析,数据库访问,邮件解析,嵌入式的 Perl 以及 Pthyon 脚本解释器等诸多的 PHP 扩展模块,因此从某种意义上来说,在运行效率上 PECL 要高于以往诸多的 PEAR 扩展库。
PECL常用选项:
search 查找一下模块
info 查看模块信息
install 安装查找到的模块
使用PECL安装memcache模块:
[root@hpf-linux ~]# /usr/local/php/bin/pecl install memcache
Build process completed successfully
Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/memcache.so'
install ok: channel://pecl.php.net/memcache-2.2.7
configuration option "php_ini" is not set to php.ini location
You should add "extension=memcache.so" to php.ini 接下来我们来增加php memcache的配置文件:
[root@hpf-linux ~]# vim /etc/php.d/memcache.ini
extension = "memcache.so"
[root@hpf-linux ~]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done 下面我们来查看一下php的模块:
[root@hpf-linux ~]# /usr/local/php/bin/php -m |grep memcache
memcache
memcached 浏览器测试:
添加Memcached的测试脚本:
[root@hpf-linux a.com]# cat memcached.php
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com