php - 关于session进一步的理解问题,session原理和回收机制。
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:02:04
0
2
444

今天复习session,有了更进一步的理解,同时也有几个疑惑,请大家帮忙分析一下哈。

  1. 第一个问题,在php里,session是有垃圾回收机制的,原理是触发多少次session_start就可能触发垃圾回收机制。那么我的问题是,如果我的session已经过了1440秒,但是此时没有立即触发回收,可能5分钟内也没触发,此时我还能获取到session的数据么?

  2. 第二个问题,关于session的过期原理,书本上说的都说是按照session文件的修改时间。我的疑问如下:1)我普通访问一个网站,在没有修改session数据的情况下,是不是在1440秒后准确退出。2)还是说我每刷新一次网页,session文件都会修改filemtime呢?session的执行原理是怎样的。

  3. 第三个问题,就是php的session_set_save_handler设置问题了,只有知道了session是怎么处理filemtime的,才能写好session_set_save_handler中的read方法,因为如果是每刷新一次网页就算修改filemtime的话,势必要在read中修改filemtime吧。

过去多啦不再A梦
过去多啦不再A梦

全員に返信(2)
阿神
  1. 取得したコードはPHP経由で読み込まれ、その読み込み処理で有効期限が切れていないか再度チェックされるため、原則として取得することはできません。

  2. 1) php.ini で設定された時間は正確であり、デフォルトは 1440 です。この設定はプログラムで変更できますが、構成ファイルを変更することをお勧めします。なぜ善悪は無効だと言われているのでしょうか? PHP はメモリ常駐ではないため、各リクエストを使用して特定のスケジュールされたタスクがトリガーされるかどうかを確認する必要があります。これは、PHP が制御する 2 つのパラメーターによって引き起こされるパフォーマンスの損失を軽減するためです。ガベージ コレクションの確率はそれぞれ session.gc_probability と session.gc_pisor です。たとえば、1/100 の場合、少なくとも 100 回のリクエストでトリガーされます。
    2) 更新されるたびに、ファイル時間は変化します。

  3. Laravel フレームワークのセッション実装を確認しました。以下はファイル ストレージとデータベース ストレージの形式です。

    リーリー リーリー
  4. ファイル時間の更新に類似した関連コードは見つかりませんでした。
いいねを押す +0
仅有的幸福

テスト後、ファイルストレージの場合、session.gc_maxlifetimeを30秒に設定すると、30秒を超えてもセッションデータは解放されます。そして、次の更新の場合、filemtime は実際に現在のものに変更されます。

その理由を説明してカスタムストレージをmemcacheに変更できる人はいますか、それともデータベースはファイルと同じ形式で保存されますか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!