バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > エラートラップについて

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
をご一読いただくと宜しいかと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

AMUAMU
投稿日時: 2010/9/21 17:04
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: エラートラップについて
私見ですが、方向性としてDB操作エラーを低レベルなところ(DB操作系)でトラップする前提でのプログラムは微妙な気がします。

DB登録をする前の段階でチェックをきちんとして、そこでデータに問題があれば、その問題のあるデータに対応した取り消し処理を書くのが筋かなと思います。


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

[url=h

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連休を費やしてしまった・・・


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

AMUAMU
投稿日時: 2010/9/22 6:08
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: エラートラップについて
引用:
あまりあり得ない話だと思いますが、DB操作とは別の処理で時間がかかり
戻ってきたときにDBに異常があり更新できない状態になっていた等の場合、
皆さんは何か良い方法で処理していればと思い質問してみました。
あまりそういう事は気にしてもしょうがないものなのですか?
そういった例外的な事はオペレーションによる対応をするのが普通なのでしょうか?

当方の場合、DBの正常性チェックは別途って感じですね。
ログへのエラートラップなどなど・・・

DB周りはツールも色々あるので活用しています。

ひとつで全部を済ませたり決済周りは、不用意なロールバックする方が個人的には怖いので・・・
(ECサイトは時間が経ってからの巻き戻しも比較的容易ですしね。デジタルコンテンツ系ですと大変ですが。


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

[url=h

hatake
投稿日時: 2010/9/22 9:36
対応状況: −−−
常連
登録日: 2009/12/3
居住地: 東京
投稿: 58
Re: エラートラップについて
おはようございます。

色々なアドバイスありがとうございます。

決済時の処理はフラグ操作で考えたいと思います。
売れるサイトでないとあまり起こらないと思いますが同じ商品を
一気に購入が集中し、クレジット決済を待つような事があると
トランザクションのかけっ放しは、問題になりそうなので一旦
コミットしてクレジット決済完了後にフラグを更新する様な
処理を考えてみます。

もし、DB操作等の例外をトラップして手動でページ遷移させるような
仕様でEC-CUBEをバージョンアップできたらもっとキメの細かい事や
大規模系のサイトにも役に立つのではと思いました。

単純に思いついた事なので意味がないようであれば切り捨ててください。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,391名です
総投稿数は110,082件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1304
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.