memcache实现php会话保持
admin
2023-06-21 09:42:33
0次

memcache实现php会话保持

实验目标:

实现通过haproxy轮询调度(RR)反代至两台lamp时,用户会话ID保持不变。

 

版本:

haproxy-1.5.4-3.el6.x86_64,yum安装

memcached-1.4.15-9.el7_2.1.x86_64,yum安装

LAMP:httpd-2.4.9、mariadb-5.5.36-linux-x86_64、php-5.4.26,都是编译安装。

php的memcache扩展模块:memcache-2.2.7,编译安装


PHP安装:(其他安装略过)

 编译成php-fpm

./configure --prefix=/usr/local/php-5.2.26 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php-5.2.26 --with-bz2


memcache 扩展模块安装

tar xf memcache-2.2.7.tgz
cd memcache-2.2.7	
    /usr/local/php-5.2.26/bin/phpize 
    Configuring for:
    PHP Api Version:         20100412
    Zend Module Api No:      20100525
    Zend Extension Api No:   220100525
./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
make && make install

 上述安装完后会有类似以下的提示:

Installing shared extensions:    /usr/local/php-5.2.26/lib/php/extensions/no-debug-non-zts-20100525/memcache.so

 编辑/etc/php.ini,在“Dynamic Extensions”相关的位置添加如下一行来载入memcache扩展:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so


httpd虚拟机配置:(只展示其中一台的配置)

cat /etc/httpd-2.4.9/extra/httpd-vhosts.conf:
	
		DocumentRoot "/www/test1.com"
		ErrorLog "logs/dummy-test1.com-error_log"
		CustomLog "logs/dummy-test1.com-access_log" common
	
		require all granted
	
		ProxyRequests Off
		ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.30:9000/www/test1.com/$1
	


httpd启用PHP及启动导入虚拟机配置:

启动以下两个模块:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

修改:

DirectoryIndex index.php index.html

添加:

Include /etc/httpd-2.4.9/extra/httpd-vhosts.conf
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php


测试php与memcache的连接是否成功:

cat /www/test1/01.php:
connect("192.168.1.25", 11211)  or die("Could not connect");

	$version = $mem->getVersion();
	echo "Server's version: ".$version."
\n"; $mem->set('hellokey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server"); echo "Store data in the cache (data will expire in 600 seconds)
\n"; $get_result = $mem->get('hellokey'); cho "$get_result is from memcached server."; ?>

访问此01.php,出现“Hello World is from memcached server”时,说明表memcache与php连接成功。


修改/etc/php.ini,把会话保存到memcache中。

session.save_handler = memcache
session.save_path="tcp://192.168.1.25:11211"


haproxy配置:

frontend  main *:80
    default_backend             app
 
backend app
    balance    roundrobin
    server app1 192.168.1.13:80 check
    server app2 192.168.1.30:80 check


测试会话保存是否成功:

192.168.1.13(lamp)的测试脚本:/www/test1.com/02.php

 192.168.1.13 web server";
?>

192.168.1.30(lamp)的测试脚本:/www/test1.com/02.php

 192.168.1.30 web server"
?>

区别在于最后一行print 显示lamp本身的IP地址。

浏览器访问02.php

memcache实现php会话保持

memcache实现php会话保持



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...