[请益] session在chrome和FF会消失

楼主: Peruheru (还在想)   2014-11-18 15:46:38
本来网站运作正常
但自从之前为了测试更改了系统时间
再改回来后,Chrome和Firefox就登不进去了
我检查后发现是因为每次session都会重新产生
导致无法读取上次产生的session(但不知为何IE却可以登入)
取消了跟GC有关的设定后就可以登入了
但那些设定是为了减少服务器负担
而且我搞不懂为什么那些设定会导致每次session都重新产生
况且之前是可以运作的,之前我并没有修改到跟session有关的部分
如果可以希望能真的找到为什么会如此,以及如何解决
这是PHP端建立session的语法
(前人留下的,原作者是 Atli@bytes.com)
function session_start_timeout ($timeout=1200, $probability=20,
$cookie_domain='/') {
ini_set("session.gc_maxlifetime", $timeout);
ini_set("session.cookie_lifetime", $timeout);
$seperator = strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN") ? "\\" : "/";
$path = ini_get("session.save_path") . $seperator . "session_" . $timeout .
"sec";
if(!file_exists($path)) {
if(!mkdir($path, 600)) {
trigger_error("Failed to create session save path directory '$path'.
Check permissions.", E_USER_ERROR);
}
}
ini_set("session.save_path", $path);
ini_set("session.gc_probability", $probability);
ini_set("session.gc_divisor", 100); // Should always be 100
session_start();
if(isset($_COOKIE[session_name()])) {
$curr = time();
$expire = $curr + $timeout;
//setcookie(session_name(), $_COOKIE[session_name()], $expire,
$cookie_domain);
if (! setcookie(session_name(), $_COOKIE[session_name()], $expire,
$cookie_domain))
error_log ('Cookie set error:' . session_name());
}
}
}
谢谢各位
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-11-18 18:13:00
何不session_start()就好php自己就能管理session 搞这么复杂看不出来有什么意义
作者: alog (A肉哥)   2014-11-18 18:15:00
你要知道..接某些前人的程式会让你匪夷所思不过我是不晓得session会造成多大的负担你session丢给memcache然后每个request做控管就不会有异常消耗的状况
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-11-18 20:17:00
感觉像是php4时代留下来的hack
作者: up9cloud (九天)   2014-11-18 22:11:00
你可以尝试把session_save_path()底下的session通通清光再试试看. php session简单说就是把变量serilize存成档案,然后不断读写...的确会有效能问题.这位作者把session.gc_probability调成20..看来你们网站loading应该蛮重的..真的可以考虑丢到memcache
作者: gname ((′口‵)↗︴<><...<><)   2014-11-19 09:15:00
建议检查一下所有的时间设定...最好印出来看~
楼主: Peruheru (还在想)   2014-11-19 23:41:00
系统时间跟时间服务器同步了,php印出来的时间也是还有什么时间可能受影响可以调的呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com