特定のセッションがタイムアウトしたことをPHPがどのように検出したのか疑問に思っています。具体的にはPHPはセッションがタイムアウトしたことをどのように検出しますか?
:私は、デフォルトのセッションの寿命などで、デフォルト(ファイルベース)セッションハンドラを使用しています。 php.iniのすべてがデフォルトです。
今のセッションが開始されている場合は任意のセッションがタイムアウトしている場合、PHPは(非はsession.gc_divisorとsession.gc_probabilityを依存する)のチェックを行います。しかし、どこからPHPをチェックするセッションからの最後のセッションのアクセス時間ですか?
セッションファイル自体は、例えば、専用ワークロードが含まれていますの場合はであるため、最後のセッションアクセス時間に関する情報はありません。
私はセッションがまだ完全なサーバの再起動後に作業しているように、セッションの開始時間に関連したメモリ内の情報がないと思います。
だから、どこPHPから情報を取得していますか?それはセッションファイルのmtime/ctimeを比較していますか?
お返事ありがとうございます。あなたは「PHPがファイルのmtimeを使用できる」と書いています。私はこれがPHPがデフォルトのファイルベースのセッションハンドラで動作する方法であると確信していますが、これについての公式な声明はありますか? – hacksteak25
いいえ、確かめることができない場合は、いつでもPHPのソースを確認することができます。 「最後の使用時間」はセッションデータ自体にコード化されていないので、セッションファイルのmtimeはそのような情報が利用可能な唯一の場所です。 PHPはどこの場所でもmtimesのデータベースを維持しません。もしそうであれば、そのデータをどこに保存するかを指定する設定オプションがあります。 –
は、ソースを調べるよりも簡単な方法があることを望んだ;)しかし、あなたは正しい。 mtimesのオプションはないので、ファイルのmtime以外は何もないようです。ありがとうございます。 – hacksteak25