ホームページ >バックエンド開発 >PHPの問題 >PHPでセッションの有効期限を設定する方法

PHPでセッションの有効期限を設定する方法

coldplay.xixi
coldplay.xixiオリジナル
2020-11-02 13:40:224334ブラウズ

php 有効期限を設定するセッション メソッド: 最初に memcache または Redis を使用してセッションを保存し、有効期限を設定します。次にセッション クラスを作成し、セッションが書き込まれるときに有効期限も書き込まれます。最後に、を読むときは、有効期限に基づいて有効期限が切れているかどうかを判断してください。

PHPでセッションの有効期限を設定する方法

有効期限を設定するための php セッション メソッド:

1. PHP セッションの有効期間

PHP のデフォルトのセッション有効期間は 1440 秒 (24 分) です。クライアントが 24 分を超えて更新されない場合、現在のセッションはリサイクルされ、無効になります。

ユーザーがブラウザを閉じるとセッションが終了し、セッションも無効になります。

php.ini の session.gc_maxlifetime を変更してセッションのライフサイクルを設定できますが、この時間を超えた直後にセッション情報が削除されるという保証はありません。 GC は確率で起動されるため、長時間起動しない場合があります。この場合、session.gc_maxlifetime を超えた後も、多数のセッションが引き続き有効になります。

2. .session.gc_maxlifetime、session.gc_probability、session.gc_divisor の説明

session.gc_maxlifetime = 30 は、セッション ファイルが 30 を超えてアクセスされていないことを意味します秒間、セッションは期限切れとみなされ、GC リサイクルを待機します。

GC プロセス呼び出しの確率は session.gc_probability/session.gc_divisor によって計算され、session.gc_divisor のデフォルトは 1000 です。

session.gc_probability = 1000 の場合、GC プロセスは開始されます。これは、リサイクルを実行するために session_start() が実行されるたびに呼び出されます。

session.gc_probability/session.gc_divisor の確率を増やすと役に立ちますが、パフォーマンスに重大な影響を及ぼします。

3. セッションの有効期限メソッドを厳密に制御する

1. memcache/Redis のリサイクル メカニズムは次のとおりであるため、memcache/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[&#39;data&#39;] = $data;
    $session_data[&#39;expire&#39;] = 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][&#39;expire&#39;]>time()){
        return $_SESSION[$name][&#39;data&#39;];
      }else{
        self::clear($name);
      }
    }
    return false;
  }
  /**
   * 清除session
   * @param String $name session name
   */
  private static function clear($name){
    unset($_SESSION[$name]);
  }
}
?>

デモ:

<?php
session_start();
$data = &#39;123456&#39;;
session::set(&#39;test&#39;, $data, 10);
echo session::get(&#39;test&#39;); // 未过期,输出
sleep(10);
echo session::get(&#39;test&#39;); // 已过期
?>

関連する無料のおすすめ: プログラミング ビデオ コース

以上がPHPでセッションの有効期限を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。