我有一个与服务器对话的应用程序,如下所示:
- 应用程序向服务器发送请求
- 服务器将数据插入数据库
- 服务器向应用程序发送一个带有各种数据的 JSON 对象
如果应用程序没有返回有效的 JSON 对象,它会假定一定存在网络错误并创建一个计时器,该计时器会在一段时间后尝试重新发送请求。
但是,我注意到有时请求会两次插入数据库,可能是因为插入了初始请求,但随后脚本未能生成 JSON 对象(可能是因为脚本在中途崩溃或超时),并且然后应用程序认为“嘿,我的请求失败,我必须再试一次”,然后它发送第二个请求,即使实际上插入了第一个请求,并且您最终得到重复。
我想也许我可以检查一个不正常的 HTTP 状态,但是如果我在 PHP 中引发了一个致命错误,服务器仍然会返回一个“HTTP 200 OK”状态。
query("insert into blah values (...");
non_existent_function();
generate_response();
有什么方法可以在 PHP 脚本崩溃或超时时恢复 HTTP 错误状态?
或者关于客户如何尽可能好地评估请求是否成功的其他建议?