免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1522 | 回复: 0
打印 上一主题 下一主题

多台php 服务器共享session 于 memcached 遇到问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-21 13:43 |只看该作者 |倒序浏览
php.ini  设置:
session.save_handler = memcache
session.save_path = tcp://192.168.0.1:11211

前端缓存服务器nginx 设置:
  upstream backend_server2 {
    #ip_hash;
    server   server1:80  max_fails=2 fail_timeout=30s;
    server   server2:80  max_fails=2 fail_timeout=30s;
    server   server3:80  max_fails=2 fail_timeout=30s;
  }

问题表现在:
第一次请求被调度到server1上,往_SESSION里写入几个值,第二次请求调度到server2/server3上,读不到之前设置的值;


测试脚本:
  1. # cat stest.php
  2. <html><meta http-equiv='content-type' content='text/html; charset=UTF-8'/><pre>
  3. <?php
  4. error_reporting(E_ALL & ~E_NOTICE);
  5. ini_set("display_errors","On");
  6. session_start();

  7. function checkHSC() {
  8.       print '<br><b>Hostname:</b> '.shell_exec('hostname').'<b>Now: </b>'.shell_exec('date +\'%Y-%m-%d %H:%M:%S\'').'<br>';
  9.       print "<b>\$_SESSION :</b> \n";
  10.       print_r ($_SESSION);
  11.       print "\n<b>\$_COOKIE :</b> \n";
  12.       print_r ($_COOKIE);
  13. }

  14. if (isset($_SESSION['testvar1']) and !empty($_SESSION['testvar1'])) {
  15.    echo "<b><font color='green'>OK there is the value.</font></b>";
  16.    checkHSC();
  17. } else {
  18.        echo "<b><font color='red'>No value,setting new.</font></b>";
  19.        $base64_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  20.        for($i = 0; $i<15; $i++) {
  21.        $str1 .= $base64_alphabet[rand(0,61)];
  22.        }
  23.        $_SESSION['testvar1'] = $str1;
  24.        $_SESSION['var1ctime'] = date("Y-n-j H:i:s");
  25.        checkHSC();
  26. }

  27. ?>
  28. <p><a href='stest2.php'>stest2.php</a>
  29. </html>



  30. #cat stest2.php

  31. <html><meta http-equiv='content-type' content='text/html; charset=UTF-8'/><pre>
  32. <?php
  33. error_reporting(E_ALL);
  34. ini_set("display_errors","On");
  35. session_start();

  36. function checkHSC() {
  37.       print '<br><b>Hostname:</b> '.shell_exec('hostname').'<b>Now: </b>'.shell_exec('date +\'%Y-%m-%d %H:%M:%S\'').'<br>';
  38.       print "<b>\$_SESSION :</b> \n";
  39.       print_r ($_SESSION);
  40.       print "\n<b>\$_COOKIE :</b> \n";
  41.       print_r ($_COOKIE);
  42. }


  43. checkHSC();

  44. ?>
  45. <p><a href='stest.php'>stest.php</a>
  46. </html>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP