ホームページ >バックエンド開発 >PHPチュートリアル >PHPで有効期限を厳密に設定したセッションを設定する方法の詳細な説明

PHPで有効期限を厳密に設定したセッションを設定する方法の詳細な説明

墨辰丷
墨辰丷オリジナル
2018-05-22 16:47:232469ブラウズ

この記事では、参考値となる有効期限を厳密に管理したPHPでのセッションの設定方法を中心に紹介します。以下のエディタで見てみましょう

1.phpセッション有効期間

PHPのセッションデフォルトの有効期間は1440秒(24分)、クライアントが24分以上更新しない場合分が経過すると、現在のセッションはリサイクルされ、無効になります。

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

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

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

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 の確率を増やすと役に立ちますが、パフォーマンスに重大な影響を及ぼします。

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でのセッションタイムアウト厳密な制御Example_PHPチュートリアル

php session _PHP の有効期限を厳密に制御しますチュートリアル

php セッション有効期限を厳密に管理する_PHPチュートリアル_プログラミング技術

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

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