次のようにサーバーと通信するアプリがあります。
- アプリがサーバーにリクエストを送信します
- サーバーはデータベースにデータを挿入します
- サーバーは、JSON オブジェクトをさまざまなデータとともにアプリに送信します
アプリが有効な JSON オブジェクトを返さない場合、アプリはネットワーク エラーが発生したと見なし、しばらくしてからリクエストの再送信を試みるタイマーを作成します。
ただし、おそらく最初のリクエストが挿入されたため、リクエストがデータベースに2回挿入されることがありますが、スクリプトはJSONオブジェクトの生成に失敗しました(おそらくスクリプトが途中でクラッシュまたはタイムアウトしたため)。次に、アプリは「リクエストが失敗しました。もう一度やり直さなければなりません」と考え、最初のリクエストが実際に挿入されたにもかかわらず、2 番目のリクエストを送信し、重複してしまいます。
OK 以外の HTTP ステータスをチェックできるのではないかと考えましたが、PHP で致命的なエラーを引き起こした場合でも、サーバーは「HTTP 200 OK」ステータスを返します。
query("insert into blah values (...");
non_existent_function();
generate_response();
PHP スクリプトがクラッシュまたはタイムアウトしたときに、HTTP エラー ステータスを取得する方法はありますか?
または、クライアントがリクエストが成功したかどうかの評価を可能な限り適切に行う方法についての他のアドバイスはありますか?