亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

memcache實現php會話保持

標簽:
PHP

https://img1.sycdn.imooc.com//5b0cf2fe0001d7cd05920306.jpg

实验目标:

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

 

版本:

haproxy-1.5.4-3.el6.x86_64yum安装

memcached-1.4.15-9.el7_2.1.x86_64yum安装

LAMPhttpd-2.4.9mariadb-5.5.36-linux-x86_64php-5.4.26,都是编译安装。

phpmemcache扩展模块: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
Installing shared extensions:    
/usr/local/php-5.2.26/lib/php/extensions/no-debug-non-zts-20100525/memcache.so


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

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

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

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

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

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



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


测试phpmemcache的连接是否成功:

cat /www/test1/01.php:

<?php
    $mem = new Memcache;
    $mem->connect("192.168.1.25", 11211)  or die("Could not connect");
 
    $version = $mem->getVersion();
    echo "Server's version: ".$version."<br/>\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)<br/>\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.13lamp)的测试脚本:/www/test1.com/02.php

<?php
session_start();
 
if (!isset($_SESSION['admin'])) {
$_SESSION['TEST'] = 'wan';
}
print $_SESSION['admin'];
print "\n";
print session_id();
print "\n";
print "===> 192.168.1.13 web server";
?>


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

<?php
session_start();
 
if (!isset($_SESSION['admin'])) {
$_SESSION['TEST'] = 'wan';
}
print $_SESSION['admin'];
print "\n";
print session_id();
print "\n";
echo "===> 192.168.1.30 web server"
?>

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

浏览器访问02.php

https://img1.sycdn.imooc.com//5b0cf50a00017c8c06660368.jpg

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消