Tôi đang kết nối từ thiết bị Android bằng java với máy chủ chạy PHP bằng cách sử dụng DefaultHttpClient.Phát hiện thời gian chờ kết nối máy khách java android từ PHP
Một thử nghiệm tôi đang làm là kiểm tra xem mã java có xử lý một cách duyên dáng nếu máy chủ mất nhiều thời gian để gửi dữ liệu trở lại. Nếu nó mất nhiều thời gian, nó sẽ ngắt kết nối và thử lại.
Hiện nay tôi đã thiết lập thời gian chờ kết nối đến 3 giây bởi:
HttpConnectionParams.setSoTimeout(httpParameters, 3000);
Trên máy chủ các tập lệnh PHP đang ngủ trong 10 giây:
sleep(10);
Mã java hoạt động, nếu kịch bản mất hơn 3 giây sau đó nó ném một java.net.SocketTimeoutException và sau đó thử lại sau một khoảng thời gian nhỏ.
Tập lệnh PHP tiếp tục chạy là không phải những gì tôi muốn. Tôi đã thử nghiệm bằng cách sử dụng connection_aborted thẳng sau khi chức năng ngủ nhưng nó không nắm bắt được khách hàng ngắt kết nối mà đã xảy ra.
ignore_user_abort(true);
sleep(10);
print "black hole";
flush();
if(connection_aborted()!=0){
// You would think this works but it does not.
}
Làm cách nào để xử lý vấn đề này?
Gì php có liên quan đang xem xét như thế nào? – Phil
@Phil một dòng đơn giản để ngủ trong 10 giây. – zaf
@Phil Tôi đã thêm nỗ lực của mình với connection_aborted – zaf