バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > iOSで2重リクエスト発生

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
se001
投稿日時: 2015/2/3 11:00
対応状況: −−−
新米
登録日: 2014/8/18
居住地:
投稿: 4
iOSで2重リクエスト発生
EC-CUBE:2.13.1
PostgreSQL:9.3.1
上記をAWS上にてWEBアプリケーションを構築していますが、iOSからの注文の際のみ、2重リクエストが発生しています。
(※毎回ではなく、100回に2〜3回のペース)

注文画面を、カスタマイズしていますが、処理の最初と最後では、トランザクションの開始&終了を明示しています。
処理は「DB整合性チェック→DB更新→メール送信」の順にしています。

Apacheのログを確認すると、同一transactionidで、https通信が2回発行されており(0.3マイクロ秒差)、処理が並列で行われ、メールが2回飛んで困っております。

iOS側のバグなのか、EC-CUBEのカスタマイズ方法が間違っているのか判別できません。

何か解決の糸口となりそうな情報や、コーディング方法がありましたら、教えてください。

AMUAMU
投稿日時: 2015/2/28 14:49
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: iOSで2重リクエスト発生
リクエストが2回とんだ場合の処理と、トランザクションは必ずしも関連がある話ではありません。

2回飛ぶ問題は、おそらくボタンなどの構成や何らかのカスタマイズでjavascriptがエラーを起こしていて多重でボタンイベントが発生した場合の処理が動いていないことが考えられます。

トランザクション的な話で考えますと
EC-CUBEでは行ロックを基本的にしていませんので、カスタマイズされている中で、整合性チェックをしっかりやろうとすればするほど、多重に処理される可能性が広がると思います。
(行ロックおよびテーブルロックしていない=前処理として読み込みが、ほぼ同時に走れば両方とも正の状態になる)

本来のEC-CUBEは、単一処理または短いシンプルな処理において受注処理を完了させる事により二重処理されないように、もしされても後のリクエストデータが有効になるように実装されています。

これらの点を考慮したカスタマイズをするのが良いと思います。
気をつけるべきはトランザクションに頼らない(または理解した)処理を実装する点かと思います。


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

[url=h

se001
投稿日時: 2015/3/18 17:09
対応状況: 解決済
新米
登録日: 2014/8/18
居住地:
投稿: 4
Re: iOSで2重リクエスト発生
丁寧に、ご回答頂きありがとうございました。
アプリは、行ロックをするカスタマイズをかけ、一時的に対応しました。
(※依然、iOSからのみ2重リクエストは発生しています。)


スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1291
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.