約 35 ~ 40 分後にセッション変数が null になるという問題があります。ただし、セッション ID は引き続き有効 (および以前と同じ番号) として表示されます。
セッション変数を読み取って表示し、秒数の増加後にページをリロードするテスト コードをいくつか作成しました。これは 2400 秒になるまで機能し、その時点で変数は次の表示で null になります。つまり、更新の間に 2400 秒待機すると、常に null になります。.htaccess の session.gc_maxlifetime を 7800 に設定しました (ini_get で 7800 と読み取られるため、明らかに設定されています)。
明らかな何かが欠けているか、深刻な奇妙なことがここで働いています。これは私を夢中にさせています。
これは、WHM を備えた Linux VPS 上にあります。
テスト セッションを作成するコード:
<?php
// start session
session_start();
// set session value
$_SESSION["session_memberid"] = 1234567;
$_SESSION["session_refresh"] = 2000;
// write file, close
session_write_close();
// display confirmation
echo json_encode(array(
'$_SESSION["session_memberid"]' => $_SESSION["session_memberid"],
'session_id' => session_id(),
'maxlifetime' => ini_get('session.gc_maxlifetime')
));
?>
セッションを読み取るコード (自動的にリロードされます):
<?php
// start session
session_start();
// get session id
$session_id = session_id();
// get stored memberid
$member_id = $_SESSION['session_memberid'];
$_SESSION['session_memberid'] = $member_id;
// get last activity
$lastactivity = $_SESSION["last_activity"];
// increasing refresh time
$refresh = $_SESSION["session_refresh"];
$_SESSION["session_refresh"] = $refresh + 100;
// update time
$_SESSION["last_activity"] = time();
// write file, close
session_write_close();
...
(code to display and refresh variables)
有効な読み取り時の出力:
{"memberid":1234567,"session_id":"c9d20d4992f184f29b259ef5ccab275f","sessionpath":"\/tmp","maxlifetime":"7800","sessioncookiepath":"\/","sessioncookielifetime":"0","referrer":"","autostart":"0","cache":false,"time":1365004882,"cookie":{"lifetime":0,"path":"\/","domain":"","secure":false,"httponly":false},"refresh":2400}
無効な読み取りが memberid (必要な変数)、時間 (last_activity)、および更新時間を null として示している場合の出力。
何か案は?