作者Peruheru (还在想)
看板PHP
标题[请益] session在chrome和FF会消失
时间Tue Nov 18 15:46:38 2014
本来网站运作正常
但自从之前为了测试更改了系统时间
再改回来後,Chrome和Firefox就登不进去了
我检查後发现是因为每次session都会重新产生
导致无法读取上次产生的session(但不知为何IE却可以登入)
取消了跟GC有关的设定後就可以登入了
但那些设定是为了减少伺服器负担
而且我搞不懂为什麽那些设定会导致每次session都重新产生
况且之前是可以运作的,之前我并没有修改到跟session有关的部分
如果可以希望能真的找到为什麽会如此,以及如何解决
这是PHP端建立session的语法
(前人留下的,原作者是
[email protected])
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());
}
}
}
谢谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.18.8
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1416296801.A.CB2.html
※ 编辑: Peruheru (220.134.18.8), 11/18/2014 17:16:48
1F:→ MOONRAKER: 何不session_start()就好 11/18 18:13
2F:→ MOONRAKER: php自己就能管理session 搞这麽复杂看不出来有什麽意义 11/18 18:14
3F:→ alog: 你要知道..接某些前人的程式会让你匪夷所思 11/18 18:15
4F:→ alog: 不过我是不晓得session会造成多大的负担 11/18 18:16
5F:→ alog: 你session丢给memcache 11/18 18:16
6F:→ alog: 然後每个request做控管就不会有异常消耗的状况 11/18 18:16
7F:→ MOONRAKER: 感觉像是php4时代留下来的hack 11/18 20:17
8F:→ up9cloud: 你可以尝试把session_save_path()底下的session通通清光 11/18 22:11
9F:→ up9cloud: 再试试看. php session简单说就是把变数serilize存成 11/18 22:14
10F:→ up9cloud: 档案,然後不断读写...的确会有效能问题. 11/18 22:15
11F:→ up9cloud: 这位作者把session.gc_probability调成20..看来你们网站 11/18 22:16
12F:→ up9cloud: loading应该蛮重的..真的可以考虑丢到memcache 11/18 22:18
13F:→ gname: 建议检查一下所有的时间设定...最好印出来看~ 11/19 09:15
14F:→ Peruheru: 系统时间跟时间伺服器同步了,php印出来的时间也是 11/19 23:41
15F:→ Peruheru: 还有什麽时间可能受影响可以调的呢? 11/19 23:42