質問 > その他 > dtb_session テーブルの肥大化 |
その他
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
468 |
投稿日時: 2016/11/24 18:02
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: dtb_session テーブルの肥大化 /data/class/helperSC_Helper_Session.phpのコンストラクタにて、
session_set_save_handler関数が呼ばれています。 ここでPHPのセッションに関する動作にEC-CUBEで定義された関数を登録しているようです。 29行目付近 引用: session_set_save_handler(array(&$this, 'sfSessOpen'), |
seike |
投稿日時: 2016/11/24 11:43
対応状況: −−−
|
常連 登録日: 2012/7/19 居住地: 投稿: 46 |
Re: dtb_session テーブルの肥大化 468 さん
回答いただきありがとうございました。 納得できました。 PHPのガベージコレクションが session.gc_probability ÷ session.gc_divisor の確率(1/1000)で 起動すると この function sfSessGc($maxlifetime) が実行されるのでしょうか・・? EC-Cube側で、PHPのガベージコレクションが起動したイベントを とらえているのですか・・・? |
468 |
投稿日時: 2016/11/23 21:47
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: dtb_session テーブルの肥大化 EC-CUBE のパラメータ MAX_LIFETIME=7200が優先されるようです。
/data/class/helperSC_Helper_Session.php の中に ガーベジコレクションを実行する関数が定義されているのですが、 この中でsession.gc_maxlifetimeの値を定数MAX_LIFETIMEに置き換えて、 dtb_sessionテーブルの中身を削除しています。
この関数の実行頻度は session.gc_probability 及び session.gc_divisor で 決まるようです。 |
seike |
投稿日時: 2016/11/23 10:19
対応状況: −−−
|
常連 登録日: 2012/7/19 居住地: 投稿: 46 |
Re: dtb_session テーブルの肥大化 php.ini の設定
session.gc_probability = 0 を session.gc_probability = 1 にしたら、しばらくして update_date が5時間(18,000秒)以上前の レコード(約140万件)は消えて、100件程度になりました。 php.ini の設定 session.gc_maxlifetime=1440 と EC-CUBE のパラメータ MAX_LIFETIME=7200 の関係は どうなっているのでしょうか・・・? どちらかの値が優先されるのでしょうか・・・? |
seike |
投稿日時: 2016/11/21 17:55
対応状況: −−−
|
常連 登録日: 2012/7/19 居住地: 投稿: 46 |
Re: dtb_session テーブルの肥大化 tao_s さん、回答ありがとうございます。
とりあえず、dtb_session テーブルの古いレコードを削除します。 EC-CUBE のパラメータ MAX_LIFETIME=7200 php.ini の設定は session.gc_probability=0 session.gc_divisor=1000 session.gc_maxlifetime=1440 の設定になっています。(初期設定のままのようです) session.gc_probability=0 になっているために、古いレコードが残っているのでしょうかねぇ・・・。 |
tao_s |
投稿日時: 2016/11/18 17:41
対応状況: −−−
|
仙人 登録日: 2008/8/20 居住地: 東京 投稿: 799 |
Re: dtb_session テーブルの肥大化 記憶が確かなら以前問題になったので、商品一覧の表示の時とかにGCが走ったと思います。
サイトを一旦止めて空にするのであれば問題は無いと思います。 あと、2.12系はセッションをDBに保存するんですが、それを普通にファイルに保存する様に変えても良いと思います。 あとはPHPのセッション有効期限の設定とかを確認してみてください。
|
seike |
投稿日時: 2016/11/14 10:06
対応状況: −−−
|
常連 登録日: 2012/7/19 居住地: 投稿: 46 |
dtb_session テーブルの肥大化 EC-Cube バージョン 2.12.2
サーバーOS Debian wheezy MySQL バージョン 5.5.35 dtb_session のレコード数が120万件を超えています。 EC-Cubeを立ち上げてからのレコードが残っています。 【質問1】 このテーブルのレコードは増えていくだけなのでしょうか? 【質問2】 古いレコードは削除してもいいのでしょうか・・・? 【質問3】 古いレコードを自動的に削除する機能はあるのでしょうか? 以上、よろしくお願いします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |