バグ報告 > フロント機能 > 受注詳細情報登録(registerOrderComplete)のトランザクション処理 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
jiro |
投稿日時: 2012/10/24 11:29
対応状況: −−−
|
新米 登録日: 2009/9/14 居住地: 投稿: 10 |
受注詳細情報登録(registerOrderComplete)のトランザクション処理 お世話になります。
class SC_Helper_Purchase の registerOrderCompleteですが、 コードの中で ----------------------------------------------- // 詳細情報を取得 $cartItems = $objCartSession->getCartList($cartKey); // 詳細情報を生成 $objProduct = new SC_Product_Ex(); $i = 0; $arrDetail = array(); foreach ($cartItems as $item) { (略) } とあるのですが、 これでは、カートセッションが切れて空になっていた場合に、注文詳細が入らないで決済が完了してしまわないでしょうか? --------------------------------------------------------- $cartItems = $objCartSession->getCartList($cartKey); //--------------------------- if(empty($cartItems)){ $objQuery->rollback(); SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, "", false,"システムエラーです"); } //--------------------------- // 詳細情報を生成 $objProduct = new SC_Product_Ex(); $i = 0; $arrDetail = array(); foreach ($cartItems as $item) { (略) } --------------------------------------------------------- のように処理しないと、危険な気がします。 実装漏れでしょうか?それとも、単なる私の思い違いでしょうか。 当方の利用しているEC CUBEのバージョンは、2.11.5ですが、最新版(2.12.2)をダウンロードして確認してみたところ、こちらも同様でした。 もし、仮に仕様であるならば、なぜこのような仕様にしているか、意図をご存知の方がいれば、教えてください! |
jiro |
投稿日時: 2012/10/24 15:10
対応状況: −−−
|
新米 登録日: 2009/9/14 居住地: 投稿: 10 |
Re: 受注詳細情報登録(registerOrderComplete)のトランザクション処理 ちなみに、このような質問を出した理由は、
「受注商品情報」が空になって登録された注文が 発生したためですが(dtb_order_detailにレコードが存在していなかった) 同じような現象を確認された方はいらっしゃいますでしょうか?? |
jiro |
投稿日時: 2012/10/24 15:27
対応状況: −−−
|
新米 登録日: 2009/9/14 居住地: 投稿: 10 |
Re: 受注詳細情報登録(registerOrderComplete)のトランザクション処理 http://svn.ec-cube.net/open_trac/ticket/905
↑ver2.5で、当不具合は解消したとのことですが、 ver2.11.5でも、現象が発生しています。 不可解なのは、dtb_orderには、レコードが問題なく登録されていることです。 |
nanasess |
投稿日時: 2012/10/24 15:57
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 受注詳細情報登録(registerOrderComplete)のトランザクション処理 引用:
受注完了時の多重アクセスなどが考えられます. dtb_order_detail は, 受注完了処理のたびに物理削除されるので, 2回目の処理が走ったさいに削除されてしまいます. 根本的な対応は dtb_order_temp を更新するさいに FOR UPDATE で明示的にロックする方法が考えられます. http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=6189&forum=8 |
jiro |
投稿日時: 2012/10/24 17:09
対応状況: −−−
|
新米 登録日: 2009/9/14 居住地: 投稿: 10 |
Re: 受注詳細情報登録(registerOrderComplete)のトランザクション処理 引用:
ありがとうございます。 明示的なロックをする対策は、 ec cube の2.11.5 でもまだ実装されていないということでしょうか?? |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |