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

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

WBOY
WBOYオリジナル
2016-06-23 13:53:57789ブラウズ

私は 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 用です
彼は、session.gc_maxlifetime より前に変更された一時ファイルを削除できることを gc プロセスに通知しました秒

もちろん、sessionid に対応する一時ファイルが存在する限り、セッションは有効です

セッションの動作を独自に制御したい場合は、自分で処理コードを記述する必要があります。マニュアルまたはオンラインのサンプル コードは、基本的な記述方法を示しているだけです。

セッション タイムアウトはあまり正確ではありません。
非常に正確である必要がある場合は、セッション内の有効期限を記録します。セッション ファイルが存在しない場合、または存在しても有効期限がタイムアウトした場合、失敗します。 ええええ










IF ($ _ session ['name'] ['expire'] & gt; time ()) {



}}} はエコーである必要がありますecho 'セッションが期限切れになりました';

ユーザーセッションタイムアウトを制御したい場合は、自分でプログラムする必要があると思います




if($_SESSION['名前']['有効期限' ] & gt; 時間 ()) {


}}}}


小??? 🎜 日付は明日ですか、それとも今日ですか?権利はありません。有解、理解は間違っています、上記の理解によれば、 then 🎜 if ($ _ session ['name'] ['expire'] & gt; time ()) {🎜 🎜 🎜 🎜} else {🎜 echo {🎜 echo {🎜 echo {🎜 echo {🎜 echo 'セッション ' 期限切れではありません'; 🎜 ' } 🎜 in 🎜 else{ 🎜 ' 'セッション ' 期限切れではありません' ------ echo 'セッション ' に変更する必要がありますか?期限切れです';? 🎜 } 🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。