【发布时间】:2012-01-10 18:06:22
【问题描述】:
我从一个使用 java 的 android 设备连接到一个使用 DefaultHttpClient 运行 PHP 的服务器。
我正在做的一个测试是检查 java 代码是否优雅地处理自己,如果服务器需要很长时间来发送数据。如果确实需要很长时间,它会断开连接并重试。
目前我已通过以下方式将连接超时设置为 3 秒:
HttpConnectionParams.setSoTimeout(httpParameters, 3000);
在服务器上,PHP 脚本正在休眠 10 秒:
sleep(10);
java 代码有效,如果脚本花费的时间超过 3 秒,那么它会抛出 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.
}
推荐的处理方法是什么?
【问题讨论】:
-
相关的php代码是什么样的?
-
@Phil 一条简单的线路让你睡 10 秒。
-
@Phil 我已经尝试使用 connection_aborted