• お世話になります。
    function.phpの26~29行目に記載さ...
  • guest 
    お世話になります。

    function.phpの26~29行目に記載されているコードについて、下記2つの設定はどちらか一方の設定で十分なのではないか、と思いました。どちらも記載されている理由を検索して調べてみたのですが納得できるものがなかったので質問させていただきました。

    //セッションファイルの置き場を変更する(/var/tmp/以下に置くと30日は削除されない)
    session_save_path("/var/tmp/");

    //ガーベージコレクションが削除するセッションの有効期限を設定(30日以上経っているものに対してだけ100分の1の確率で削除)
    ini_set('session.gc_maxlifetime', 60*60*24*30);


    そのように考えた理由

    ①session_save_pathを/var/tmpに変更することでセッションファイルが30日削除されないのであれば、session.gc_maxlifetimeでセッションの有効期限を30日に設定する必要はない

    ②session.gc_maxlifetimeでセッションの有効期限を30日に設定しているのであれば、わざわざ/var/tmpに保存先変更する必要はない


    理解が間違っているところがあればご指摘ください。また、どちらも記載している明確な理由あれば教えていただきたいです。

    よろしくお願い致します。

    回答 0

     
    ①について
    同じサーバーでsession.gc_maxlifetimeが短いサイトがあった場合、ドメインが違ったとしても、そのタイミングでセッションは削除されます。
    他のサイトやページに影響を受けないようにするには、セッションファイルの保存先session.save_pathを変える必要があります。
    ※セッションはドメインを区別しないので、上記の場合などは両方の設定が必要になります。

    ②について
    /var/tmpに保存先を変更しない(/tmpのままの)場合は10日、またはサーバ再起動時にセッションが削除されます。
    なのでsession.gc_maxlifetimeだけ設定しても意味がありません。

    上記理由から両方設定しています。