0

opencart でセッションの有効期間に特定の時間を設定しようとしていますが、

OpenCart 構造を掘り下げると、ファイル セッション ハンドラが見つかりましたsystem/library/session.php

<?php
class Session {
    public $data = array();

    public function __construct() {     
        if (!session_id()) {
            ini_set('session.use_cookies', 'On');
            ini_set('session.use_trans_sid', 'Off');

            session_set_cookie_params(0, '/');
            session_start();
        }

        $this->data =& $_SESSION;
    }

    function getId() {
        return session_id();
    }
}
?>

私は、私がやっていることは大丈夫かどうかを確認するためにいくつかのテストを行っていsystemます.

<?php
class Session {
    public $data = array();

    public function __construct() {     
        if (!session_id()) {
            ini_set('session.use_cookies', 'On');
            ini_set('session.use_trans_sid', 'Off');

            session_set_cookie_params(60, '/');
            ini_set('session.cache_expire', '1');
            ini_set('session.gc_maxlifetime', '60');
            ini_set('session.save_path',DIR_SYSTEM.'my_sessions');

            session_start();
        }

        $this->data =& $_SESSION;
    }

    function getId() {
        return session_id();
    }
}
?>

フォルダー内にセッション ファイルが表示されるようになりましたが、変更前と同じように存続しているようです。私が間違っているのは何ですか?

4

1 に答える 1

0

のドキュメントにsession.gc_maxlifetimeは次のように書かれています:

session.gc_maxlifetime は、データが「ガベージ」と見なされ、潜在的にクリーンアップされるまでの秒数を指定します

それはそれをきれいにするかもしれませんし、その時に残すかもしれません。で洗浄するかどうかは、 と に依存しsession.gc_probabilityますsession.gc_divisor。アクセス数の多いサイトでは問題ありません。ただし、数回アクセスするだけで、ローカル マシンで確認できます。

とにかく、サーバー側のガベージ コレクターではなく、Cookie の有効期間に依存することをお勧めします。

于 2013-06-14T09:17:40.067 に答える