EC-CUBEにアクセスがあるといろんな所に不具合は出るのですが特に顕著だったのがセッションです。
$_SESSIONをDBに持っているのですが一行updateするだけのクエリが遅延する不思議な現象が発生します
色々調べてみたのでメモ書きです。
まずはアプリ的な問題なのかなーと調べてみた
session_set_save_handlerを使用した場合のバグ
http://blog.asens.jp/archives/667
ふむふむ、session_write_closeを使えばいいらしいけど使い方がわからんな~
他のアプリでも使われてそうだなー
なんとなくcakeを調べてみた。
~~~
/**
* Starts the Session.
*
* @param string $name Variable name to check for
* @return boolean True if variable is there
* @access public
*/
function start() {
if (function_exists(‘session_write_close’)) {
session_write_close();
}
$this->__initSession();
return $this->__startSession();
}
~~~
sessionをスタートする前には必ず呼んだほうがいいのか。
ついでにソースもみてるといい勉強に
テーブル構造も書いてあるな
なんかEC-CUBEとちょっと違うけど何でだろう。。
~~~
CREATE TABLE cake_sessions (
id VARCHAR(255) NOT NULL default ” PRIMARY KEY,
data TEXT NOT NULL DEFAULT ”,
expires INT DEFAULT NULL
);
~~~
MySQLのはまりどころ(その1)~行ロックのつもりでテーブルロック
032 MySQLのはまりどころ(その1)〜行ロックのつもりでテーブルロック – EC-One ナレッジセンター レスキューサービス ブログ
EC-CUBEのカラムはというとこんな感じ。
~~~
CREATE TABLE dtb_session (
sess_id text NOT NULL,
sess_data text,
create_date datetime NOT NULL,
update_date datetime NOT NULL
) TYPE=InnoDB;
~~~
まさにこの現象は当てはまりそう。。
この辺が複合的に作用してそうな気がしてきた!
むしろtable直すだけでいいのか????
解決したら結果書きます
2010/02/10追記
どうも、indexの追加だけじゃ直ってないような、別の不具合がでたような?よくわからない状態に。
ここの修正だけしたバージョンで単体テストに近いことしないと結論は出せない模様です。
コメント