バグ報告 > フロント機能 > 携帯で注文する時、二重注文が入ってしまうのは? |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
pop2joa |
投稿日時: 2010/6/8 18:02
対応状況: −−−
|
新米 登録日: 2010/6/7 居住地: 投稿: 6 |
Re: 二重注文の不具合 AMUAMUさん!!
ご応答ありがとうございます〜 教えていただいた通り、 「明示的な行ロック」を調べましてSC_Helper_DB.phpのsfGetOrderTempの 「$where = "order_temp_id = ?"」を「$where = "order_temp_id = ? FOR UPDATE"」に変えたら、?のパターンの「del_flg」は1個だけが「0」になるようになりました。正しいですかね?他に問題が発生するんじゃないかと心配ですが、、 ?のパターンに対してはもうちょっと調べてみます。 本当にありがとうございます〜 ↓↓以下参照サイト http://www.geocities.jp/sugachan1973/doc/funto60.html |
AMUAMU |
投稿日時: 2010/6/8 15:47
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
二重注文の不具合 この問題、詳しく調べてみました。
今まで当方の顧客では発生経験がなく、深く気にしていませんでしたが、たまたまlfDoCompleteを大幅に修正する件があり改めて調べたところ、標準のEC-CUBEのトランザクションの利用方法に問題があり、この現象は不具合ではないかと考えています。 原因として考えているのはdtb_order_tempの読み取り行に対して明示的ロックをしていないことではないかと思います。 この結果、多重読み込みへの対応は本来、pop2joaさんご指摘の?のパターンを想定しているように見えますが、?のように複数の注文に分裂するタイミングがありえます。 ?のパターンも起きないように出来るとは思いますが改編箇所多いですね・・・ まだ調べていませんが広範囲に同じ問題を抱えている可能性があります。 なお、これはMySQLでもPostgreSQLでも起こると思います。(どちらも明示的な行ロックが確か必要なはず) 少々MySQL、PostgreSQLのトランザクション制御に関する深い所で、実装系差違部分もありますし(例えば、もし同様の手順をDB2で組むと発生しないはず)、難解ですが早々に治したい不具合かもしれません。 私の勘違いではないかどうか、他の識者の方々の見解もいただければと思います。
|
pop2joa |
投稿日時: 2010/6/8 0:17
対応状況: −−−
|
新米 登録日: 2010/6/7 居住地: 投稿: 6 |
Re: 携帯で注文する時、二重注文が入ってしまうのは?
|
pop2joa |
投稿日時: 2010/6/8 0:14
対応状況: −−−
|
新米 登録日: 2010/6/7 居住地: 投稿: 6 |
携帯で注文する時、二重注文が入ってしまうのは? 携帯で注文する時、サーバーの応答とかが遅くなるとユーザとしては2〜3回押すあ場合があると思いますが、その場合、同じ注文が2〜3個入っちゃって困ってます。
【現象】 パタンとしては2種類があります。 ?同じ注文が2〜3個発生し、dtb_orderのdel_flgは1個だけが生きている場合 ?同じ注文が2〜3個発生し、del_flgが全部生きている場合(del_flg = 0) そもそもECCUBEってこちらの処理は出来てないですかね? ご返信お待ちしますので宜しくお願い致します。 【システム情報】 EC-CUBE 2.4.1 PHP 5.1.6 PostgreSQL 8.1.11 |
« 1 (2) |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |