ホームページ > バックエンド開発 > PHPチュートリアル > PHPのセッションタイムアウトについて教えてください。

PHPのセッションタイムアウトについて教えてください。

WBOY
リリース: 2016-06-13 12:02:23
オリジナル
833 人が閲覧しました

php のセッション タイムアウトについて教えてください

この投稿は webstaryoyo によって最終編集されました: 2014-07-13 12:36:20 私は php を学習している初心者で、次の点についてアドバイスを求めたいです。理解できないことがたくさんあります。以前にASPを学習したことがあり、タイムアウトを設定できるsession.timeoutがあることを知っています。デフォルトは20分です。しかし、PHP にはセッション タイムアウトを設定するような機能はありません。PHP ページが更新されない場合、つまりサーバーへのリクエストがない場合、デフォルトではセッションがタイムアウトするまでどのくらい時間がかかるのでしょうか。

php.ini に session.cookie_lifetime があります。デフォルト値は 0 です。この 0 はセッションタイムアウトに関係していますか? 0 は、ブラウザが閉じられていない限り、セッションは常に有効であり、タイムアウトしないことを意味しますか?
さらに、設定ファイルには session.gc_maxlifetime = 1440 とあります。これは、デフォルトの tmp ディレクトリ内の sess ファイルを削除するためのガベージ コレクションのタイムアウトです。デフォルトは 1440 秒で、これは 24 分です。セッションタイムアウト? 24 分後、sess ファイルが削除される可能性がありますが、これはセッションも無効になることを意味しますか?ただし、この削除には確率があり、デフォルトは 1/1000 です。つまり、削除されない可能性が非常に高いということです。では、セッションが削除されなければ、セッションは常に有効であり、タイムアウトにはならないのでしょうか。言い換えれば、セッションが 24 分間更新されなかった場合、セッションは必然的にタイムアウトになるのではないかということです。

解決策。
------解決策-----
session.gc_maxlifetime はセッションの有効期間ではありません。ガベージ コレクション プロセス gc の場合
セッション.gc_maxlifetime 秒前に変更された一時ファイルは削除できることを gc プロセスに伝えます

もちろん、sessionid に対応する一時ファイルが存在する限り、セッションは削除されます。 be valid

セッションの動作を独立して制御したい場合は、自分で処理コードを記述する必要があります。マニュアルやオンラインのサンプルコードは基本的な書き方を示しているだけなので、必要に応じて拡張する必要があります
-----解決策------------- --- ----
セッションのタイムアウトはあまり正確ではありません。
正確である必要がある場合は、セッション内の有効期限を記録します。セッション ファイルが存在しない場合、または存在しても有効期限がタイムアウトになる場合は失敗します。

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