zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Nginx网站架构实战——16、nginx连接memcached

架构连接Nginx网站 实战 16 memcached
2023-06-13 09:15:45 时间
Nginx网站架构实战——04、Nginx日志管理 Nginx网站架构实战——05、Nginx定时任务完成日志切割 Nginx网站架构实战——06、Location详解之精准匹配 Nginx网站架构实战——07、Location之正则匹配 Nginx网站架构实战——08、Nginx Rewrite语法详解 Nginx网站架构实战——09、编译PHP并与Nginx整合 Nginx网站架构实战——10、安装Ecshop Nginx网站架构实战——11、商城Url重写实战 Nginx网站架构实战——12-Nginx Gzip压缩提升网站速度 Nginx网站架构实战——13、Expires缓存提升网站负载 Nginx网站架构实战——14、反向代理实现Nginx+Apache动静分离 Nginx网站架构实战——15、Nginx实现负载均衡 一:配置php扩展memcached
 

wget http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz

# tar zvxf memcached-1.4.9.tar.gz

# cd memcached-1.4.9

 /usr/bin/phpize #生成configure编译文件

如果这里出现

 Can’t find PHP headers in /usr/include/php

 The php-devel package is required for use of this command

那么执行 yum install php-devel

 ./configure --with-php-config=/usr/bin/php-config /

make make insll 

会提示找到memcache.so位置

Installing shared extensions: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/ [不同的电脑提示也不同]

修改php.ini 

先找到Php.ini的位置

find / -name php.ini

vim xxx/xxx/xxx/php.ini

extension=/根据提示的mecached的位置/memcache.so ;

杀死php进程:pkill -9 php

重启php:./usr/bin/php-fpm

最后检查memcached是否安装成功 127.0.0.1 查看是否有memcache 模块。

 

二:利用telnet 测试memcached
 

查找memcached的位置 find / -name memcached

 ./usr/local/memcached/bin/memcached -m 64 -p 11211 -vvv 

 【注意不能是root用户开启】 ./usr/local/memcached/bin/memcached -u nobody -vv -p 11211 

如果上面的不能够安装memcached就按这里的方式来安装。

wget -c http://www.memcached.org/files/memcached-1.4.17.tar.gz

tar -zxvf memcached-1.4.17.tar.gz

cd memcached-1.4.17

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

sudo make install

第三步:启动memcached

cd /usr/local/memcached

./bin/memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211

第三步:检查是否安装成功

$ps -aux | grep memcache 

三:测试是否安装了telnet
 

测试是否安装了telnet

rpm -q telnet-server 无信息回复表示没安装

安装 telnet

yum install telnet

在linux上打开一个窗口 打开telnet服务

telnet 127.0.0.1 11211 回车

ctrl+] 打开回显回车。

在linux上打开一个窗口 测试mecached

 add news 0 0 8 /

 12345678 回车

 get news 回车

四:nginx配置
 

(1)配置nginx.conf 信息

 location / {

 #设置key

 set $memcached_key $uri 

 #根据key查找对应的服务器

 memcached_pass 127.0.0.1:11211;

 #出错的时候回调php,查找数据库中的数据

 error_page 404 /callback.php;

 在linux上打开一个窗口 打开telnet服务

 telnet 127.0.0.1 11211 回车

 ctrl+] 打开回显回车。

 在linux上打开一个窗口添加一个memcache key

 add /4.html 0 0 10 /

 hello word

 浏览器上测试:输入 127.0.0.1/4.html

 浏览器上显示:hello word

(2)新建测试数据

 mysql -uroot -p;

 use test;

 CREATE TABLE `abc_table` (

 `uid` int(10) unsigned NOT NULL AUTO_INCREMENT,

 `name` varchar(25) NOT NULL,

 PRIMARY KEY (`uid`)

 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 insert abc_table values(null,1.html page);

 insert abc_table values(null,2.html page);

 insert abc_table values(null,3.html page);

 insert abc_table values(null,4.html page);

 insert abc_table values(null,5.html page);

 insert abc_table values(null,6.html page);

 insert abc_table values(null,7.html page);

 insert abc_table values(null,8.html page);

 insert abc_table values(null,9.html page);

 insert abc_table values(null,10.html page);

 select * from abc_table

 +-----+--------------+

 | uid | name |

 +-----+--------------+

 | 1 | 1.html page |

 | 2 | 2.html page |

 | 3 | 3.html page |

 | 4 | 4.html page |

 | 5 | 5.html page |

 | 6 | 6.html page |

 | 7 | 7.html page |

 | 8 | 8.html page |

 | 9 | 9.html page |

 | 10 | 10.html page |

 +-----+--------------+

(3)编写callback.php 要是在nginx的html目录文件夹中编写。

 ?php

 header( Content-type: text/html; charset=utf-8 

 $uri=$_SERVER[REQUEST_URI];

 #/user4243.html

 #字符串截取获取数字

 $uid=substr($uri,5,strpos($uri,.)-5);

 # echo $uid;die;

 #连接数据库并入memcached

 $con=mysql_connect( localhost , root , root 

 $sql=use test;

 mysql_query($sql,$con);

 $sql= set names utf8 

 $sql= select * from abc_table where uid= .$uid;

 # echo $sql ;die;

 $rs=mysql_query($sql,$con);

 $sql= set names utf8 

 $sql= select * from abc_table where uid= .$uid;

 # echo $sql ;die;

 $rs=mysql_query($sql,$con);

 $user=mysql_fetch_assoc($rs);

 if(empty($user)){

 echo 用户不存在 

 }else{

 #写入memcached

 $men=new memcache();

 $men- connect(localhost,11211);

 #echo 2222;

 $men- add($uri,$user[name],0,300);

 $men- close();

(4)测试是否连接成功memcache

 浏览器输入:127.0.0.1/user1.html 出现空白

 再次刷新 出现数据

 可以通过telnet窗口观察其中取值的变化。

五:请求过程

Nginx网站架构实战——16、nginx连接memcached

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/54233.html

apachegooglelinuxMemcachedmysqlnginxphp