質問 > その他 > エラートラップについて |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
hatake |
投稿日時: 2010/9/21 12:10
対応状況: −−−
|
常連 登録日: 2009/12/3 居住地: 東京 投稿: 58 |
エラートラップについて こんにちは。
DB操作でエラーが発生した場合どのようにしたらよいのでしょうか? ここが間違えてるかもしれませんがDB操作でエラーが発生すると 必ずエラーページに遷移すると思います。 そのような時にエラーページに遷移する前に後処理を行ってから エラーページに遷移させたいケースがあると思いますが どのようにすればよいのでしょうか? 例えばクレジット決済後DB登録をし、そこでエラーが発生した場合 クレジット決済を取り消すのような場合です。 直近で困っているわけではありませんが知っている方がいたら 教えてください。 |
seasoft |
投稿日時: 2010/9/21 14:31
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: エラートラップについて この辺りの動作、バージョンによって差異があります。
まずは、 http://xoops.ec-cube.net/modules/tinyd0/index.php?id=8 をご一読いただくと宜しいかと思います。
|
AMUAMU |
投稿日時: 2010/9/21 17:04
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: エラートラップについて 私見ですが、方向性としてDB操作エラーを低レベルなところ(DB操作系)でトラップする前提でのプログラムは微妙な気がします。
DB登録をする前の段階でチェックをきちんとして、そこでデータに問題があれば、その問題のあるデータに対応した取り消し処理を書くのが筋かなと思います。
|
hatake |
投稿日時: 2010/9/21 17:47
対応状況: −−−
|
常連 登録日: 2009/12/3 居住地: 東京 投稿: 58 |
Re: エラートラップについて seasoftさん、AMUAMUさん
ありがとうございます。 良く考えればバージョンによって変わっている可能性はわかりますね。 勝手な思い込みで環境やバージョンに依存しないと思いこみ動作環境の 書き込みを省略してしまいました。 申し訳りません。 私の環境は以下の通りです。 [EC-CUBE] 2.4.3 [OS] Windows Vista [PHP] PHP 5.1.6 [WEBサーバ] Apache/2.2.3 データの内容については確かに言われる通りだと思います。 あまりあり得ない話だと思いますが、DB操作とは別の処理で時間がかかり 戻ってきたときにDBに異常があり更新できない状態になっていた等の場合、 皆さんは何か良い方法で処理していればと思い質問してみました。 あまりそういう事は気にしてもしょうがないものなのですか? そういった例外的な事はオペレーションによる対応をするのが普通なのでしょうか? |
seasoft |
投稿日時: 2010/9/21 18:06
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: エラートラップについて > 例えばクレジット決済後DB登録をし、そこでエラーが発生した場合
> クレジット決済を取り消すのような場合です。 一連の処理ならば、下記みたいな処理も考えられそうです。 ・DB トランザクション開始 ・DB 登録 ・クレジット決済 → OK: (場合によっては更新してから) コミット → NG: ロールバック 他にも、クレジット決済成功フラグを設けるような方法でも対応できるかもしれません。 でも、どうしても、DBエラーを拾って何かする必要がある場合、/html/install/index.php 辺りが参考になるかもしれません。決してお勧めはしませんが。 2.5系では、もう少し違ったアプローチも可能になるかも知れません。 # しかし、例外処理は面倒ですね・・・ (特に PHP4) # 2.5系のエラー処理を色々と考えて、3連休を費やしてしまった・・・
|
AMUAMU |
投稿日時: 2010/9/22 6:08
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: エラートラップについて 引用:
あまりあり得ない話だと思いますが、DB操作とは別の処理で時間がかかり 当方の場合、DBの正常性チェックは別途って感じですね。 ログへのエラートラップなどなど・・・ DB周りはツールも色々あるので活用しています。 ひとつで全部を済ませたり決済周りは、不用意なロールバックする方が個人的には怖いので・・・ (ECサイトは時間が経ってからの巻き戻しも比較的容易ですしね。デジタルコンテンツ系ですと大変ですが。
|
hatake |
投稿日時: 2010/9/22 9:36
対応状況: −−−
|
常連 登録日: 2009/12/3 居住地: 東京 投稿: 58 |
Re: エラートラップについて おはようございます。
色々なアドバイスありがとうございます。 決済時の処理はフラグ操作で考えたいと思います。 売れるサイトでないとあまり起こらないと思いますが同じ商品を 一気に購入が集中し、クレジット決済を待つような事があると トランザクションのかけっ放しは、問題になりそうなので一旦 コミットしてクレジット決済完了後にフラグを更新する様な 処理を考えてみます。 もし、DB操作等の例外をトラップして手動でページ遷移させるような 仕様でEC-CUBEをバージョンアップできたらもっとキメの細かい事や 大規模系のサイトにも役に立つのではと思いました。 単純に思いついた事なので意味がないようであれば切り捨ててください。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |