バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > フロント機能 > 携帯で注文する時、二重注文が入ってしまうのは?

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seasoft
投稿日時: 2012/11/12 19:43
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 二重注文の不具合
根本的には、1つの PHP セッション変数に、複数の HTTP セッションが結びついている時点で異常ですね。

たしか、最新版の幾つか前のバージョンで、この辺りも関わるらしい改修を行いました。そのため、最新版では発生しない不具合かもしれません。

不確実ではありますが、ご参考まで。


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

riichi
投稿日時: 2012/11/12 18:41
対応状況: −−−
新米
登録日: 2012/1/11
居住地:
投稿: 3
Re: 二重注文の不具合
現状、確認しているのは携帯の場合だけです。
javascript使えないので、サーバー側で制御する必要があります。

まいった。
seasoft
投稿日時: 2012/10/23 22:12
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 二重注文の不具合
簡易的には、JavaScript でボタンの多重クリックを制限するというのはありがちですね。


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

riichi
投稿日時: 2012/10/23 21:23
対応状況: −−−
新米
登録日: 2012/1/11
居住地:
投稿: 3
Re: 二重注文の不具合
同じ現象で困ってます。

連続でボタンを押すと、セッション情報が削除する前に
受注一時データから、何個でも受注情報を作ってしまいます。

受注一時データが論理削除された後に
受注データが作成された場合、論理削除されたデータができてます。

解決方法として、
注文テーブルの受注一時情報ID(order_temp_id)が同じのがある場合は、作成しないようにチェックいれたらいいんでしょうか?



-----------------------------------------------------
EC-CUBEバージョン 2.11.1
PHPバージョン PHP 5.3.6
DBバージョン MySQL 5.1
-----------------------------------------------------
ゲスト
投稿日時: 2012/9/8 20:56
対応状況: 確認中
Re: 二重注文の不具合
古いレスに返信ですみません。

こちらでは、モバイルページから購入した場合に、
注文ボタンを多重クリックで、注文完了メールは送信されるが、受注データが管理画面に反映されないという事象が再現できました。

古いバージョンを使用しているので、既に解決済みであれば
教えて頂けないでしょうか?

よろしくお願いいたします。
-----------------------------------------------------
EC-CUBEバージョン 2.4.3c
PHPバージョン PHP 5.3.6
DBバージョン PostgreSQL 8.4.7
-----------------------------------------------------
AMUAMU
投稿日時: 2010/6/9 12:21
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 二重注文の不具合
1行だけが注文として入るようにする方向性ですが、明示的な行ロックをきちんとかける前提で、いくつか例外パターンを実装する必要があると思います。
・行ロックが取得出来なかった時の例外処理
・order_tempの行データに既にdel_flgが立っていた場合の処理
・その他のアップデート処理での競合時の例外処理(ロックが正常にされていれば、トランザクション関係のエラーが発生するので)

例外時にはユーザーの再読込が考えられるので、表示上は普通に表示されるようにする処理。(order_tempから有効なorder_idを特定して、そのorder_idで表示だけ成立させる)

という感じでしょうか。
色々な所を確認する必要がありますが、基本はlfDoComplete前後からのスタートでしょうね・・・。


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

[url=h

pop2joa
投稿日時: 2010/6/9 11:54
対応状況: −−−
新米
登録日: 2010/6/7
居住地:
投稿: 6
Re: 二重注文の不具合
結果としては
関数を追加してやってみましたが、lfDoComplete内だけだと効かないみたいですね。これはもうちょっと調べてみます。

一つ気づいたのですが、この方式だと注文のデータが2行以上できちゃって1行だけが有効になります。現行ポイントのところをSOAPClientで連動してるのでこれじゃ使えない状態になると思ってます。それで前AMUAMUさんがおしゃってた?のパターンも(1行だけが注文として入るように)起きないようにしたいですが、どこからみてみればいいですかね?

すみません。宜しくお願い致します!!
AMUAMU
投稿日時: 2010/6/9 11:43
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 二重注文の不具合
引用:
対策としては「SC_Helper_DB.php」内に新しい関数(sfGetOrderTempと似たような)を作って「LC_Page_Shopping_Complete.php」のlfDoCompleteだけ新しい関数みるようにしようと思っておりますが、これで大丈夫ですようね?

大丈夫だと思います。

引用:
実際、sfGetOrderTemp内ではSC_Queryを引き回しているみたいですが、僕の勘違いですかね?それとも「FOR UPDATE」もSC_Queryを引き回すように入れないといけないっていう話?ですか?


lfDoCompleteの引数にある$objQuery(トランザクションを発行したオブジェクト)を持ち回して利用するのが筋かなと思います。


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

[url=h

pop2joa
投稿日時: 2010/6/9 10:41
対応状況: −−−
新米
登録日: 2010/6/7
居住地:
投稿: 6
Re: 二重注文の不具合
AMUAMUさんがおしゃった通り、ヘルパー関数は他のページでも使われてるので確かどのような影響が出るかという問題はありますね。

引用:

当方の手元では取り急ぎの対応として、気付いたところをHelper関数呼び出しから各クラス内に専用で作る読み込みクラス内関数に書き換える方針で考えています。


対策としては「SC_Helper_DB.php」内に新しい関数(sfGetOrderTempと似たような)を作って「LC_Page_Shopping_Complete.php」のlfDoCompleteだけ新しい関数みるようにしようと思っておりますが、これで大丈夫ですようね?

ちなみに
引用:

SC_Queryオブジェクトを引き回していないのでルール的には正しくない問題

実際、sfGetOrderTemp内ではSC_Queryを引き回しているみたいですが、僕の勘違いですかね?それとも「FOR UPDATE」もSC_Queryを引き回すように入れないといけないっていう話?ですか?
AMUAMU
投稿日時: 2010/6/8 18:17
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 二重注文の不具合
対応方法としてはSELECT FOR UPDATE文を足す方向で正しいと思いますが、SC_Helper_DBは共通ヘルパー関数なので他のページの処理で使われたときにどのような影響が出るかという問題と、SC_Queryオブジェクトを引き回していないのでルール的には正しくない問題(実際は同じ接続を使い回すので大丈夫なのかな?)がありますので、十分に調べた方がいいかもしれません。

当方の手元では取り急ぎの対応として、気付いたところをHelper関数呼び出しから各クラス内に専用で作る読み込みクラス内関数に書き換える方針で考えています。

なお細かく精査していませんが、上記の対応をすれば、ご指摘の?のパターンは発生しなくなると思います。


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

[url=h

(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,728名です
総投稿数は109,953件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
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.