我正在使用Java从一个Android设备连接到运行PHP的服务器,使用DefaultHttpClient。
我进行的一个测试是检查Java代码是否能够优雅地处理如果服务器在发送数据时需要很长时间。如果确实需要很长时间,则会断开连接并重试。
目前,我已经通过以下方式将连接超时设置为3秒:
HttpConnectionParams.setSoTimeout(httpParameters, 3000);
在服务器上,PHP脚本会睡眠10秒钟:
sleep(10);
如果脚本运行时间超过3秒,则Java代码会抛出java.net.SocketTimeoutException异常,然后在短时间内重新尝试。
PHP脚本继续运行,这不是我想要的。我尝试在sleep函数之后立即使用connection_aborted进行测试,但它无法捕获已经发生的客户端断开连接。
ignore_user_abort(true);
sleep(10);
print "black hole";
flush();
if(connection_aborted()!=0){
// You would think this works but it does not.
}
什么是处理这个问题的推荐方法?