質問 > その他 > dtb_product_stockについて教えていただきたいです |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kishikawa |
投稿日時: 2019/2/22 12:02
対応状況: 解決済
|
一人前 登録日: 2018/12/20 居住地: 松戸 投稿: 89 |
dtb_product_stockについて教えていただきたいです [EC-CUBE] 3.0.16
[PHP] 7.1 [データベース] MySQL [WEBサーバ] apache 現在、在庫数はdtb_product_classとdtb_product_stockに持っていますが、 今やっているカスタマイズにて、在庫を触る箇所が増えます。 dtb_product_classとdtb_product_stockの不整合が起こらないように注意して実装をする予定ですが、そもそもdtb_product_stockの在庫数のデータは必要なのかな、と思いまして、どのような意味のあるデータなのか知りたいです。 dtb_product_stockを使わないようにすると、どのような影響があるのでしょうか? |
hiroo |
投稿日時: 2019/2/22 12:51
対応状況: −−−
|
長老 登録日: 2016/6/9 居住地: 投稿: 160 |
Re: dtb_product_stockについて教えていただきたいです ざっくり言うと、見た目上の在庫と実際の在庫、のような使い分けのようです。
|
kishikawa |
投稿日時: 2019/2/22 13:50
対応状況: −−−
|
一人前 登録日: 2018/12/20 居住地: 松戸 投稿: 89 |
Re: dtb_product_stockについて教えていただきたいです hirooさん、ありがとうございます!
dtb_product_stockが見た目上の在庫で、 dtb_product_classが実際の在庫、 ということでしょうか? ではdtb_product_stockとdtb_product_classの在庫数はずれがある可能性もある、ということでしょうか? 見た目上の在庫と、実際の在庫を分けて持っておきたい理由も知りたいです。 |
tsuji |
投稿日時: 2019/2/22 13:50
対応状況: −−−
|
仙人 登録日: 2013/11/19 居住地: 投稿: 958 |
Re: dtb_product_stockについて教えていただきたいです kishikawa 様
横から失礼します。 もう少し詳しく言いますとdtb_product_stockは 同一商品の同時購入を防いで購入によって 在庫が正しく減るように使われています。 2系では在庫がdtb_products_classのみに含まれていてそこでも 同様の仕組みが用いられていましたので、 dtb_product_classのみにすることも技術的には可能と思っています。 しかし、2系の場合、在庫を更新しない商品情報の更新によって 該当商品を含む購入が止まってしまう問題が起こったことがあるので 3系でテーブルを分けることによってそれが防がれているのだと思います。
|
kishikawa |
投稿日時: 2019/2/22 14:07
対応状況: −−−
|
一人前 登録日: 2018/12/20 居住地: 松戸 投稿: 89 |
Re: dtb_product_stockについて教えていただきたいです tsuji様
ご回答ありがとうございます! > 同一商品の同時購入を防いで購入によって > 在庫が正しく減るように使われています。 こちらは購入時にdtb_product_stockにロックをかけていることをさしているのでしょうか? dtb_product_stockではなくdtb_product_classにロックをかけても同様のことは可能なのかなと思っています。 また、管理画面の商品情報の更新では、在庫にロックをかける処理はないので、フロントで購入が止まるようなことはなさそうなのですが・・・。 (管理画面で在庫がロックなしに更新できることも疑問なのですが) 私の知識不足なのだと思いますが、テーブルを分けて持つ意義が完全には納得しきれないでいます・・・ |
hiroo |
投稿日時: 2019/2/22 14:19
対応状況: −−−
|
長老 登録日: 2016/6/9 居住地: 投稿: 160 |
Re: dtb_product_stockについて教えていただきたいです dtb_product_classが見た目上の在庫で、
dtb_product_stockが実際の在庫、ということのようです。 私もkishikawaさんと同じ疑問を持っていたのですが、ここのフォーラムで上記のようなことが書かれていたのを見た記憶があります。 フロントでカートに入れるあたりの在庫チェックをdtb_product_classで行うことで、購入時の在庫ロックの影響をうけないようにする、って感じなのではないでしょうか。 |
kishikawa |
投稿日時: 2019/2/22 15:30
対応状況: −−−
|
一人前 登録日: 2018/12/20 居住地: 松戸 投稿: 89 |
Re: dtb_product_stockについて教えていただきたいです hiroo様
重ねてご回答いただきありがとうございます。 >dtb_product_classが見た目上の在庫で、 >dtb_product_stockが実際の在庫、ということのようです。 そうなんですね、私が思っていたのと逆でしたね。 在庫チェックは見た目上の在庫で、 ロックをかけるのは実際の在庫で、ということですかね。 >フロントでカートに入れるあたりの在庫チェックをdtb_product_classで行うことで、購入時の在庫ロックの影響をうけないようにする dtb_product_stockはselect for updateなので、在庫のチェックだけならselectするだけなので影響を受けなそうですが・・・。 実はdtb_product_stockがなくてもあまり問題がないのかなという印象を受けました。 ありがとうございました。 |
hiroo |
投稿日時: 2019/2/23 10:59
対応状況: −−−
|
長老 登録日: 2016/6/9 居住地: 投稿: 160 |
Re: dtb_product_stockについて教えていただきたいです 私も同じように思い、以前にここで質問をしたことがあります。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=17797&forum=2&post_id=77379#forumpost77379 しかし、回答は得られませんでした |
tsuji |
投稿日時: 2019/2/25 15:30
対応状況: −−−
|
仙人 登録日: 2013/11/19 居住地: 投稿: 958 |
Re: dtb_product_stockについて教えていただきたいです kishikawa 様, hiroo 様
個人的な見解ですので、あくまで参考程度にしていただきたいのですが、 2系で商品登録CSVで登録が長い場合に購入できないという現象が発生しました。 トランザクションにより該当商品のdtb_products_classのレコードが 次々にロックされることによって 購入時の在庫のロックができないという状態が発生しました。 現状の3系のソースでも在庫が商品登録CSVに含まれているため、 dtb_product_classとdtb_product_stockにロックが掛かり 同様のことは発生すると思います。 しかし、商品登録CSVから在庫を別にした場合は dtb_product_classにロックがかかるようになるため、 この現象は防げるということになるかと思っています。 ※ つまり商品登録CSVの他に在庫登録CSVを作るイメージです。 上記で効力を発揮するかと思っています。
|
kishikawa |
投稿日時: 2019/2/25 15:45
対応状況: −−−
|
一人前 登録日: 2018/12/20 居住地: 松戸 投稿: 89 |
Re: dtb_product_stockについて教えていただきたいです tsuji様
重ねてご回答いただきありがとうございます! 確かにロックが長時間になってしまうと、 ロックを取得する購入画面では待ちが発生しますね。 しかもCSV登録でロックを取得すると、 最終的なコミットまで待たなければならないので、 ロック時間が長くなりそうですね。 3系ではCSV登録ではロックを取得していないようですが、 上記のような理由があったのですね。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |