PHP和memcached缓存模块扩展及openresty+memcached实现缓存

一、PHP模块扩展

[root@server1 ~]# tar zxf memcache-2.2.5.tgz 
[root@server1 ~]# vim .bash_profile
[root@server1 ~]# source .bash_profile

这里写图片描述

[root@server1 ~]# cd memcache-2.2.5
[root@server1 memcache-2.2.5]# phpize   #扩展php扩展模块的,通过phpize可以建立php的外挂模块
[root@server1 memcache-2.2.5]# ./configure 
[root@server1 memcache-2.2.5]# make
[root@server1 memcache-2.2.5]# make install

这里写图片描述

[root@server1 memcache-2.2.5]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# vim php.ini 
  extension=memcache.so
[root@server1 etc]# /etc/init.d/php-fpm reload
[root@server1 etc]# php -m |grep memcache
  memcache

这里写图片描述

[root@server1 ~]# yum install -y memcached
[root@server1 ~]# /etc/init.d/memcached start
[root@server1 ~]# netstat -antlp

这里写图片描述

[root@server1 ~]# cd memcache-2.2.5
[root@server1 memcache-2.2.5]# cp memcache.php example.php /usr/local/lnmp/nginx/html/

访问172.25.254.1/example.php

这里写图片描述

解决方法:

[root@server1 html]# vim memcache.php 

这里写图片描述

访问网页172.25.254.1/mamcache.php

这里写图片描述

这里写图片描述

[root@foundation66 Desktop]# ab -c 10 -n 1000 http://172.25.254.1/index.php

这里写图片描述

[root@foundation66 Desktop]# ab -c 10 -n 1000 http://172.25.254.1/example.php

这里写图片描述

而且速度还快。

二、缓存前移openresty

openresty是更强大的nginx,原生装有更多的模块,比如在nginx后加memcache所需要的memc-nginx和srcache-nginx模块,可以直接用openresty完成,而不需要重新编译,nginx本身不支持动态编译。

传统上,PHP中使用memcache的方法是使用php-memcache或php-memached扩展操作Memcache。

传统上是通过PHP操作memcache的,要执行PHP代码,Nginx就必然要和FastCGI通信,同时也要进入PHP的生命周期,因此SAPI、PHP Core和Zend Engine的一系列逻辑会被执行。更糟糕的是,fpm和PHP可能会阻塞,因此破坏了Nginx的非阻塞性。

因此一种更高效的缓存策略是Nginx直接访问Memcache,并用uri和args等Nginx内置变量设定缓存key规则。

其中,memc模块扩展了Nginx标准的memcache模块,增加了set、add、delete等memcache命令,而srcache则是为location增加了透明的基于subrequest的缓存层。

[root@server1 ~]# tar zxf openresty-1.13.6.1.tar.gz 
[root@server1 ~]# cd openresty-1.13.6.1
[root@server1 openresty-1.13.6.1]# ./configure --prefix=/usr/local/lnmp/openresty --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx --with-threads --with-file-aio
[root@server1 openresty-1.13.6.1]# make && make install  #编译
[root@server1 openresty-1.13.6.1]# cd /usr/local/lnmp/openresty/
[root@server1 openresty]# cd nginx/conf/
[root@server1 conf]# vim nginx.conf

这里写图片描述

这里写图片描述

这里写图片描述

[root@server1 conf]# /usr/local/lnmp/openresty/nginx/sbin/nginx -t
[root@server1 conf]# /usr/local/lnmp/openresty/nginx/sbin/nginx

此时访问页面172.25.254.1/
这里写图片描述

测试:

[root@foundation66 Desktop]# ab -c 10 -n 1000 http://172.25.254.1/index.php

这里写图片描述

[root@foundation66 lamp1]# ab -c 10 -n 1000 http://172.25.254.1/example.php

这里写图片描述

由此可以看出来memcached缓存在一定程度上提高了访问速度。

猜你喜欢

转载自blog.csdn.net/JaneNancy/article/details/81489440