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.40.1/example.php
解决方法:
[root@server1 html]# vim memcache.php
访问网页172.25.40.1/mamcache.php
[root@foundation40 Desktop]# ab -c 10 -n 1000 http://172.25.40.1/index.php
[root@foundation40 Desktop]# ab -c 10 -n 1000 http://172.25.40.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.40.1/
测试:
[root@foundation40 Desktop]# ab -c 10 -n 1000 http://172.25.40.1/index.php
[root@foundation40 Desktop]# ab -c 10 -n 1000 http://172.25.40.1/example.php
由此可以看出来memcached缓存在一定程度上提高了访问速度。