この投稿は guliputaoyou によって最終編集されました: 2013-04-23 11:04:18
サーバー構成ファイルは変更できないため、ユーザーがログインし続ける時間を 2 時間に変更する必要があります。
そこで phpinfo をチェックしたところ、gc_maxlifetime=1440、
が見つかりました。
そこで、多くの情報を確認し、ログイン ページでこの関数を使用して、元の session_start() を置き換えました。
関数 start_session_custom($expire = 36000)
{
ini_set('session.gc_maxlifetime', $expire);
if (empty($_COOKIE['PHPSESSID'])) {
Session_set_cookie_params($expire);
Session_start();
} else {
Session_start();
setcookie('PHPSESSID', session_id(), time() $expire);
}
}
$expire は 36000 (10h) に設定されていますが、それでも機能しません。
もう 1 つの注意: 実際、古いコードの束には多数の session_start が含まれていますが、それらをすべて start_session_custom に置き換える必要がありますか?
最初の session_start ページ (つまり、ログイン ページ) のみを変更することはできますか?
訂正:
全文を確認したところ、session_set_save_handler
があることがわかりました。
その中には
そして $maxlifetime=72000;
関数 gc($maxlifetime)
{
if(rand(0,1000) 00!=0)return false;
$expiretime = $this->now - $maxlifetime;
return $this->db->query("DELETE FROM $this->table WHERE `last_activity`<$expiretime");
}
-----解決策--------------------------------
原則は、 session_start の前に設定されます。それ以外の場合は無効です
コードを公開ファイルに配置し (すべてのプログラムがそれをロードします)、他のファイルの session_start
を削除できます。
探すのが面倒な場合は、php 5.4 環境でプロジェクトを実行することもできます
php 5.4 では session_start が繰り返されると警告が発行されるため、それに応じて変更すると非常に便利です