ホームページ > バックエンド開発 > PHPチュートリアル > PHPを使用して厳密な有効期限を持つセッションをセットアップする方法

PHPを使用して厳密な有効期限を持つセッションをセットアップする方法

jacklove
リリース: 2023-03-31 07:30:02
オリジナル
2407 人が閲覧しました

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

php の sessionデフォルトの有効期間は 1440 秒(24 分) ) 、クライアントが 24 分を超えて更新しない場合、現在のセッションはリサイクルされ、無効になります。
ユーザーがブラウザを閉じるとセッションが終了し、セッションも無効になります。

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

2.session.gc_maxlifetime,session.gc_probability,session.gc_pisor description

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 を使用してセッションを保存し、有効期限を設定します。 /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]);
    }
}
?>
ログイン後にコピー

demo:

<?phpsession_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 サイトに注意してください。

関連する推奨事項:

mysql タイムスタンプ フォーマット関数 from_unixtime の使用手順

mysql 関数 concat および group_concat についてfor use

mysql innodb の起動に失敗して再起動できない場合の対処方法の説明

php 中国ネットワーク学習トピックphpセッション (写真、ビデオ、ケースを含む)

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート