php の sessionデフォルトの有効期間は 1440 秒(24 分) ) 、クライアントが 24 分を超えて更新しない場合、現在のセッションはリサイクルされ、無効になります。
ユーザーがブラウザを閉じるとセッションが終了し、セッションも無効になります。
php.ini の session.gc_maxlifetime を変更してセッションのライフサイクルを設定できますが、この直後にセッション情報が削除されるという保証はありません。時間を超過しました。 GC は確率で起動されるため、長時間起動しない場合があります。この場合、session.gc_maxlifetime を超えた後も、多数のセッションが引き続き有効になります。
session.gc_maxlifetime = 30 は、セッション ファイルが存在するときを意味します。 30 秒 その後アクセスされない場合、セッションは期限切れとみなされ、GC リサイクルを待機します。
GC プロセス呼び出しの確率は、session.gc_probability/session.gc_pisor によって計算され、session.gc_pisor のデフォルトは 1000 です。
session.gc_probability = 1000 の場合、GC はsession_start() が実行されるたびにこのプロセスが呼び出され、リサイクルが実行されます。
session.gc_probability/session.gc_pisor の確率を増やすと役に立ちますが、パフォーマンスに重大な影響を及ぼします。
1. memcache/redis を使用してセッションを保存し、有効期限を設定します。 /redis リサイクル メカニズムは確率に基づいておらず、セッションが期限切れになった後に確実に無効になります。
2. PHP を使用して実装し、セッション クラスを作成し、セッションの書き込み時に有効期限を書き込みます。読み取りの際は、有効期限に基づいて有効期限が切れているかどうかを判断します。
<?php/** * Session控制类 */class Session{ /** * 设置session * @param String $name session name * @param Mixed $data session data * @param Int $expire 超时时间(秒) */ public static function set($name, $data, $expire=600){ $session_data = array(); $session_data['data'] = $data; $session_data['expire'] = time()+$expire; $_SESSION[$name] = $session_data; } /** * 读取session * @param String $name session name * @return Mixed */ public static function get($name){ if(isset($_SESSION[$name])){ if($_SESSION[$name]['expire']>time()){ return $_SESSION[$name]['data']; }else{ self::clear($name); } } return false; } /** * 清除session * @param String $name session name */ private static function clear($name){ unset($_SESSION[$name]); } } ?>
demo:
<?phpsession_start();$data = '123456'; session::set('test', $data, 10);echo session::get('test'); // 未过期,输出sleep(10);echo session::get('test'); // 已过期?>
この記事では、PHP を使用して有効期限を厳密に制御するセッションを設定する方法について説明します。関連コンテンツについては、PHP 中国語 Web サイトに注意してください。
関連する推奨事項:
mysql タイムスタンプ フォーマット関数 from_unixtime の使用手順
mysql 関数 concat および group_concat についてfor use
mysql innodb の起動に失敗して再起動できない場合の対処方法の説明
php 中国ネットワーク学習トピック:phpセッション (写真、ビデオ、ケースを含む)
以上がPHPを使用して厳密な有効期限を持つセッションをセットアップする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。