ホームページ >バックエンド開発 >PHPチュートリアル >PHPのセッションタイムアウトについて教えてください。
私は 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; 時間 ()) {
}}}}