質問 > その他 > セッション排他制御でのバグについて |
その他
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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 ご参考になりましたら、幸いです。
|
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
|
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 による縮小画像を表示しているページでは発現しやすかったと記憶ています。
|
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 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |