バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 在庫数設定以上の購入が発生した

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
monaca
投稿日時: 2019/7/9 4:36
対応状況: −−−
新米
登録日: 2019/7/9
居住地:
投稿: 3
在庫数設定以上の購入が発生した
[EC-CUBE] 3.0.16
[レンタルサーバ] AWS EC2
[OS] Red Hat Enterprise Linux 7
[PHP] 7.2.13
[データベース] MySQL 5.5.60-MariaDB
[WEBサーバ] Apache/2.4.6
[導入プラグインの有無] あれば導入プラグインを記載 トラストリング PAYJP決済プラグイン
[現象]

在庫数設定以上の購入が発生しました。

人気商品の一定期間内限定での販売があり、多くのユーザが同じような時間に同じ商品の購入操作を行っていました。
その商品について、期間内全体では販売上限 5,000 個で、日ごとに分けてそれぞれ販売上限数を設定していました。
ECCUBE の基本機能である在庫設定をそのまま使用していました。
期間を終えてみると、全体で 120 個ほどの受注オーバーが発生していました。

なにが原因と考えられそうでしょうか?
ECCUBE 本体の動作は、カートに入れる直前にも購入確定する直前にも在庫数確認しているようなので原因が思い当たりません。


ポイントと考えているのは、同じような時間に大量のトランザクションが並行して、言葉どおり商品を奪い合う状況だったことです。
在庫数の減算とほぼ同時に別の購入の発生が繰り返し進行されていく状況でも ECCUBE の在庫数確認処理は、たとえばトランザクション単位でテーブルロックしながら進めるので誤りが発生しないなどの仕組みと言えるでしょうか。

多くのユーザがほぼ同時に購入操作したときに発生しうる、言い換えればそのような状況でなければなかなか発生せず気づきにくい件、気づいたところで再現するための状況づくりが難しい件かと思っています。
monaca
投稿日時: 2019/7/9 4:44
対応状況: −−−
新米
登録日: 2019/7/9
居住地:
投稿: 3
Re: 在庫数設定以上の購入が発生した
質問者です。おそらく関係ないとは思いますが、書いたことに不足があったので追記します。
導入プラグインは以下がすべてです。


### オーナーズストアプラグイン

- BannerSimplePlugin 1.0.0 BannerSimple
- Coupon 2.0.1 Coupon
- instagram連携 1.0.1 InstagramApi (停止中)
- Pointプラグイン 1.0.0 Point
- ポストキャリア 1.3.3 PostCarrier
- 商品レビュープラグイン 1.0.1 ProductReview
- 売上ランキング 1.0.4 SalesRanking
- 商品並び替えプラグイン 1.4.0 SortProduct


### 独自プラグイン

- PAY.JP決済プラグイン 1.0.2 PayJp
468
投稿日時: 2019/7/9 9:07
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1791
Re: 在庫数設定以上の購入が発生した
在庫数の確認はどのような操作で行われましたか?
ユーザーが購入処理をしているような状況で、管理画面側の商品編集画面や商品規格編集画面で登録ボタンを押したりしていないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

monaca
投稿日時: 2019/7/9 22:42
対応状況: −−−
新米
登録日: 2019/7/9
居住地:
投稿: 3
Re: 在庫数設定以上の購入が発生した
ご指摘頂いた個別の操作は、それら一つ一つについてというより、「ECCUBEやインフラのような技術部分でなく、単なる操作ミス等ではないか」という主旨と理解しました。

私自身が操作作業者ではありませんので、操作が絶対どうとはお書きしにくいのですが、
在庫数設定というごく基礎的な機能に不良がある可能性は非常に低いと考え、私も一番最初に「単に数量設定を間違えていたとか、ほか操作ミス等の可能性はないか」と念押しで確認したところ、販売開始前の設定については複数の人間でダブルチェックしており、販売中は画面を触ること自体なかったので考えにくいとのことでした。


私としては、そういう人的なものも可能性の一つでありつつも、一方、基礎的な機能とはいえ質問時にお書きしたように技術的に再現しうる条件が限定されており、開発においてテストしにくい、そもそも想定されテストされているのか、という印象も正直少し持っています。

たとえば ECCUBE の changelog を見ると
https://github.com/EC-CUBE/ec-cube/releases
v4 まで重ねてもまだ
>#3978 在庫がマイナスにならないよう 0 チェックを追加
大前提のようなごく基礎的な部分に不具合があり修正が入っています。

在庫がマイナスになるなど当然あるはずがないと思い込んでいても実はそうでないこともあるようですので、
技術的、人的、可能性はどちらもありつつ、現時点では技術面で考えられる点はないか探しているところでした。

客観的には、操作ミス等ではないかというご意見を頂きましたので、あらためて念押し確認します。
コメントありがとうございます。
468
投稿日時: 2019/7/10 0:43
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1791
Re: 在庫数設定以上の購入が発生した
在庫について過去、以下のような事例に遭遇した事があります。

・フロントの購入処理と管理画面の商品編集画面の更新タイミングが重なって在庫にズレが生じた
・決済プラグインに不具合があり、購入処理時にDB上2箇所で管理されている在庫数に対して1箇所しか更新されておらず在庫にズレが生じた

どちらも設定された在庫以上に注文が入った報告を受け、調査した事例です。

質問させていただいた意図としては、
まず前者の事例に当てはまるどうか確認したかったというものになります。
ECCUBE2の頃から弊社のクライアントには説明しておりますが、
管理画面の商品編集画面を表示した状態で
フロントで買い物が発生し、
その事に気付かないまま、商品編集画面で登録ボタンを押すと
在庫数がズレていきます。

理由は、商品編集画面に在庫数の入力欄があり
画面を表示したタイミングの在庫数がセットされます。
フロントで買い物が発生し、DB上の在庫数が減算されたとしても
商品データ更新処理には商品編集画面でセットされた在庫数で再度更新される為です。
ECCUBE3はデフォルトでは在庫数が確認できる画面は
商品編集画面だけだったかと思いますので
そこで誤って登録ボタンを押してしまう可能性もあるのではないかと思いました。

後者の決済プラグインの不具合については、
ご利用の決済プラグインは、不具合のあった決済プラグインとは違いますし、
(該当のプラグインは1年以上前にバージョンアップで改修済み)
私は利用した事の無いプラグインですので、
そのような不具合があるのかどうかは分かりかねます。
実際に購入テストを実施して、dtb_product_class.stockとdtb_product_stock.stockが同じ値に更新されているか確認されてみてはいかがでしょうか?

まだ発見されていない不具合が存在する可能性はゼロではありませんので
技術的に大丈夫と断言する事は出来ませんが
弊社が運用しているECサイトでは短期間に大量の同時購入が行われるような販売方法を実施しておりますが
セットした在庫数以上の注文が入った事はありません。
(決済プラグインは未使用です)

参考程度の情報ですが、以上になります。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

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


 



ログイン


ec-cube.co

統計情報

総メンバー数は46,391名です
総投稿数は92,280件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1904
4
468
1791
5
yuh
1594
6
red
1312
7
umebius
1296
8
fukap
907
9
tsuji
840
10
shutta
835
11 ramrun 789
12
tao_s
758
13
h_tanaka
746
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.