バージョン選択

フォーラム

メニュー

オンライン状況

74 人のユーザが現在オンラインです。 (64 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 73
tattsu もっと...

サイト内検索

質問 > その他 > セッション排他制御でのバグについて

その他

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
habu
投稿日時: 2023/12/26 18:31
対応状況: −−−
長老
登録日: 2006/9/15
居住地:
投稿: 282
Re: セッション排他制御でのバグについて
izumin様

> 排他制御が効いていない為、書き込みと読み込みの順番が守られず
> 更新前の古いセッションデータを参照してしまう事がある、その結果、処理に不整合が起きる(例はちょっと思いつきませんが古いカート情報を見てしまう等)と言った理解で宜しいでしょうか。

> 許容出来るバグなのであれば緊急度を下げて対応したいのですが現状微妙な状態です。

かなり(一回り以上)してからのレスですが、
懸念されている通り、おかしなカート状態で注文されてしまう事があります。
セッション管理をファイルにして、PHP標準のセッション管理に乗っかる方法で簡便に排他制御でき、問題無く動くというのが個人的な感想です。
ただ、セッション管理をファイル以外の方法で行なう必要があり、排他制御を組み込むだけの工数をかけられるかどうかという時には、
カートフローにて おかしなセッション値だった場合にはエラーとする制御を入れるという方法で防ぐのも一案です。
(AjaxでAPI連携しない場合は、それほど発生しないというのもあります)


カート周りでAjaxでAPIを参照する場合には、頻度が爆増しますので、対応必須となります。

その場合に取り得る方法を先ほど記事にいたしました。
(「read_and_close」を指定して session_start する SC_SessionFactory_UseCookieReadOnly_Ex を作成する方法)
https://qiita.com/sf-habu/private/ec41385c4f650e1f614b

ご参考になりましたら、幸いです。


----------------
株式会社システムフレンド
羽生 賢太郎(Kentaro Habu)
改造専門店・EC-CUBE工房

izumin
投稿日時: 2011/8/14 2:47
対応状況: −−−
半人前
登録日: 2011/6/21
居住地: 東京
投稿: 16
Re: セッション排他制御でのバグについて
AMUAMU様

ご回答大変ありがとうございます。感謝致します。

リンク先のページを参考にさせて頂きます。

このバグについてボヤっとしたイメージしか沸きません。

この結果、重大なバグが起こるのかどうかが見えません。

お客様の発注ミスに繋がるのかどうかといった点です。

許容出来るバグなのか判断が微妙です。

許容出来るバグなのであれば緊急度を下げて対応したいのですが現状微妙な状態です。

AMUAMU
投稿日時: 2011/8/12 18:20
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: セッション排他制御でのバグについて
下記チケットの内容が参考になると思います。
http://svn.ec-cube.net/open_trac/ticket/1340


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

izumin
投稿日時: 2011/8/11 23:03
対応状況: −−−
半人前
登録日: 2011/6/21
居住地: 東京
投稿: 16
Re: セッション排他制御でのバグについて
レス遅くなりましたが本件PHP5.3.5でも再現致しました。

izumin
投稿日時: 2011/6/30 20:32
対応状況: −−−
半人前
登録日: 2011/6/21
居住地: 東京
投稿: 16
Re: セッション排他制御でのバグについて
134様

再現手順ありがとうございます!
基本的に1クライアントが複数PHPファイルに対して同時にアクセスにいき更にレスポンスが悪い時に発現するのですね。
ケースとしては、かなりのレアケースでしょうか。

こちらは、PHP5.3.5なので同様の手順で再現するか確認してみます。
ありがとうございました。

izumin
投稿日時: 2011/6/30 20:17
対応状況: −−−
半人前
登録日: 2011/6/21
居住地: 東京
投稿: 16
Re: セッション排他制御でのバグについて
>seasoft様

ご回答ありがとうございます。
全てのページなのですね。
参考に致します。
134
投稿日時: 2011/6/24 13:03
対応状況: −−−
一人前
登録日: 2009/10/20
居住地: 京都市
投稿: 91
Re: セッション排他制御でのバグについて
下記の手順で再現できました。

環境は下記の通りです。
EC-CUBE 2.11.1
apache 2.2 (KeepAlive=ON timeout=5 max=100)
PHP 5.3.3
PostgreSQL 8.3.12

1.
トップページにお勧め商品ブロックを配置する。
(デフォルトのお勧め商品ブロックは resize_image.php を使用しています)

2.
data/class/LC_Page_ResizeImage.php の process() メソッド内で
sleep(15);
とし、レスポンスの悪い状況を再現。

3.
トップページを未ログイン状態で表示し、15秒以内にログインブロックからログインする。

4.
ログインボックスに「ようこそ○○様」と表示され、ログインできているように見えるが
別のページへ遷移すると、未ログイン状態になっている。

次に、SC_Helper_Session の session_set_save_handler をコメントアウトしたところ
排他処理が効いて、正常にログイン情報が残りました。
ただ、セッションがクローズされるまで次のリクエストが待たされるので
レスポンスが遅くなりました。(当たり前ですね^^;)

seasoft
投稿日時: 2011/6/24 11:13
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: セッション排他制御でのバグについて
基本的には全てのページです。特に、resize.php による縮小画像を表示しているページでは発現しやすかったと記憶ています。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

izumin
投稿日時: 2011/6/24 10:11
対応状況: −−−
半人前
登録日: 2011/6/21
居住地: 東京
投稿: 16
Re: セッション排他制御でのバグについて
本件どのページで再現しますでしょうか。
再現させる方法などご存じの方がいらっしゃいましたらご教授頂けると助かります。
izumin
投稿日時: 2011/6/21 18:51
対応状況: −−−
半人前
登録日: 2011/6/21
居住地: 東京
投稿: 16
Re: セッション排他制御でのバグについて
ご回答ありがとうございます!

なるほど、5.3〜では解消されている可能性もあるのですね。
まずは5.3以前で再現してみて同様の条件で5.3以降で再現するか検証してみます。
再現が難しそうですが。

案1は134様がおっしゃる通り弊害が気になりますね。
今の構成は、様々な弊害があった経緯の上での構成である可能性もありますし。

案2はきちんとテストしてやっていると工数がそれなりに膨らみそうですね。

普通に運用されているようなので、本件で大きな障害は発生していないんでしょうか・・・

ありがとうございます。
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,900名です
総投稿数は110,006件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.