ホームページ >バックエンド開発 >PHPチュートリアル >一部のステートメントは、関数の実行中に実行されないことがあります。

一部のステートメントは、関数の実行中に実行されないことがあります。

WBOY
WBOYオリジナル
2016-06-23 13:25:041014ブラウズ

作成した関数にはフォームがあり、ユーザーは携帯電話番号と金額を入力してバックグラウンドで送信し、処理が成功するとデータベースにレコードが書き込まれます。結果としてレコード内のフィールド if result=100 次に、3 つのテーブルの 3 つのステータスを更新する SQL ステートメントを作成しました。問題の 1 つは、result=100 であっても、後続の SQL ステートメントは実行ステータスがないように見え、更新されないことです。 . このフォームには、多くのユーザーが同時に送信している状況があります。原因は同時ではないと思います。考えられる理由を教えてください。

ディスカッションに返信(解決策) 明らかにフォールトトレランスが十分にできていません 考えられるすべての操作エラーが失敗した後に、何らかの障害があるかどうかを確認し、プログラムの方向性を決定する必要があります
実際に同時実行性が高すぎることが原因である場合は、トランザクションの使用を検討してください

トランザクションを使用すると、すべてのステップが正常に実行されることが保証されます。 1 つのステップが失敗する限り、ロールバックされます。


熱心なご回答ありがとうございます。ただし、現在すべてのテーブル タイプはトランザクションをサポートしていない myisam です。ただし、テーブル タイプが変更されると、一部の検索が非常に遅くなり、クエリ データのタイムアウトが発生します

はい、トランザクションを使用します。クエリを遅くしますので、必要以外は使わないでください

トランザクションを使うかどうかに関わらず、エラー判定は常に必要です

皆さん、熱心なご回答ありがとうございました

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。