2008-10-04 19 views
9

Khi lập trình yêu cầu HTTP POST theo lập trình, giá trị thời gian chờ nào sẽ hợp lý?Giá trị thời gian chờ HTTP POST đáng ngờ để sử dụng khi yêu cầu phát hành theo chương trình?

Trong trường hợp của tôi, tôi đang tìm cách đặt giá trị thời gian chờ 'hợp lý' khi thực hiện yêu cầu POST trong PHP, tuy nhiên điều này áp dụng cho bất kỳ ngôn ngữ nào.

Tôi cần có thể phát hành một bộ yêu cầu, mỗi yêu cầu đến một URL do người dùng chỉ định. Nếu tôi cần xử lý các yêu cầu liên tục thay vì đồng thời, tôi muốn chỉ định thời gian hợp lý vượt quá yêu cầu được coi là đã hết thời gian chờ.

PHP default socket timeout là 60 giây. Điều này có vẻ như một thời gian dài không cần thiết để chờ đợi trước khi quyết định một yêu cầu sẽ không được hoàn thành.

Vì đây là các yêu cầu POST nên hoàn tất nhanh chóng - không có dữ liệu nào được truy xuất và trả lại như với yêu cầu GET.

Chúng tôi sẽ có thể giả định, phần lớn thời gian, rằng thất bại trong việc đưa ra một đáp ứng với yêu cầu trong vòng X giây có nghĩa là chủ nhà khó có thể đưa ra một phản hồi trong vòng một thời gian hợp lý cho các giá trị của X đáng kể ít hơn 60.

Máy chủ hiếm khi mất hơn 60 giây để trả lời yêu cầu POST đơn giản. Họ thậm chí hiếm khi mất hơn 10 giây? 5 giây?

Giá trị hợp lý của X trong thực tế có thể là gì? Những biện minh đi kèm sẽ là cực kỳ có lợi.

+0

Nếu bạn đang tải lên tệp, đặc biệt là từ thiết bị di động, có thể mất hơn 60 giây. – Oscar

Trả lời

5

Tôi khuyên bạn nên thiết lập thử nghiệm vì có quá nhiều yếu tố liên quan đến việc cung cấp giá trị luôn hợp lý.

Yêu cầu POST gửi dữ liệu được xử lý. Quá trình xử lý mất bao lâu? Đây sẽ là ứng dụng/dữ liệu cụ thể.

Máy chủ lưu trữ ở đâu? Người dùng đang cung cấp URL, do đó sẽ không rõ. Chúng tôi không thể biết lưu lượng truy cập là gì giữa ứng dụng của bạn và máy chủ lưu trữ. Chúng tôi không thể biết tải của máy chủ lưu trữ.

Về cơ bản, không có thời gian chờ hợp lý phổ quát. Bạn phải sử dụng phán đoán tốt nhất của riêng bạn dựa trên nhu cầu cụ thể của bạn. Thiết lập một thử nghiệm và sử dụng để xác định giới hạn của bạn.

1

Hầu hết các thư viện đều có thời gian chờ kết nối và thời gian chờ đã đọc. Đó là, thời gian chờ giữa cố gắng kết nối với máy chủ từ xa và thời gian chờ sau khi gửi yêu cầu, rằng họ phải chờ phản hồi.

Nếu đây là dịch vụ web cục bộ, tôi sẽ đặt thời gian chờ kết nối thấp, 1 giây hoặc ít hơn nếu thư viện của bạn hỗ trợ. Nếu dịch vụ từ xa mà bạn đang kết nối không có IMHO thì tốt hơn là trả lại phản hồi cho người dùng ngay lập tức, hơn là cho phép tất cả chuỗi công việc của bạn chặn trên dịch vụ từ xa đó, gây ra các lỗi ngược dòng khác. Đối với thời gian chờ đọc, điều đó phức tạp hơn, bạn cần nó thấp, vì vậy bạn không xả hết công nhân đang đợi dịch vụ từ xa quay trở lại, nhưng bạn cũng không muốn nó thấp rằng nó đóng kết nối trước khi đọc phản hồi. Đó là điều bạn sẽ phải kiểm tra, sau đó theo dõi dưới dạng số liệu khi hệ thống của bạn đang được sản xuất.

Các vấn đề liên quan