- 論壇徽章:
- 0
|
php.ini 設(shè)置:
session.save_handler = memcache
session.save_path = tcp://192.168.0.1:11211
前端緩存服務(wù)器nginx 設(shè)置:
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;
}
問題表現(xiàn)在:
第一次請求被調(diào)度到server1上,往_SESSION里寫入幾個值,第二次請求調(diào)度到server2/server3上,讀不到之前設(shè)置的值;
測試腳本:- # cat stest.php
- <html><meta http-equiv='content-type' content='text/html; charset=UTF-8'/><pre>
- <?php
- error_reporting(E_ALL & ~E_NOTICE);
- ini_set("display_errors","On");
- session_start();
- function checkHSC() {
- print '<br><b>Hostname:</b> '.shell_exec('hostname').'<b>Now: </b>'.shell_exec('date +\'%Y-%m-%d %H:%M:%S\'').'<br>';
- print "<b>\$_SESSION :</b> \n";
- print_r ($_SESSION);
- print "\n<b>\$_COOKIE :</b> \n";
- print_r ($_COOKIE);
- }
- if (isset($_SESSION['testvar1']) and !empty($_SESSION['testvar1'])) {
- echo "<b><font color='green'>OK there is the value.</font></b>";
- checkHSC();
- } else {
- echo "<b><font color='red'>No value,setting new.</font></b>";
- $base64_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
- for($i = 0; $i<15; $i++) {
- $str1 .= $base64_alphabet[rand(0,61)];
- }
- $_SESSION['testvar1'] = $str1;
- $_SESSION['var1ctime'] = date("Y-n-j H:i:s");
- checkHSC();
- }
- ?>
- <p><a href='stest2.php'>stest2.php</a>
- </html>
- #cat stest2.php
- <html><meta http-equiv='content-type' content='text/html; charset=UTF-8'/><pre>
- <?php
- error_reporting(E_ALL);
- ini_set("display_errors","On");
- session_start();
- function checkHSC() {
- print '<br><b>Hostname:</b> '.shell_exec('hostname').'<b>Now: </b>'.shell_exec('date +\'%Y-%m-%d %H:%M:%S\'').'<br>';
- print "<b>\$_SESSION :</b> \n";
- print_r ($_SESSION);
- print "\n<b>\$_COOKIE :</b> \n";
- print_r ($_COOKIE);
- }
- checkHSC();
- ?>
- <p><a href='stest.php'>stest.php</a>
- </html>
復(fù)制代碼 |
|