2010-03-30 29 views
17

Nếu một trang được gọi là yêu cầu nhiều xử lý và người dùng nhấp vào dừng trước khi kết thúc, trình duyệt có đơn giản dừng yêu cầu ở phía máy khách không?Điều gì sẽ xảy ra khi người dùng nhấn dừng trong trình duyệt web của họ?

Hoặc là một thông báo 'dừng' được gửi đến máy chủ, tức là xử lý đã bị hủy chưa?

+9

Con mèo chết ở đâu đó. –

+0

@Sky Sanders có ý nghĩa hài hước ... –

Trả lời

10

Không thư nào được gửi đến máy chủ khi điều đó xảy ra. Khi người dùng nhấn nút dừng, trình duyệt chỉ dừng hiển thị trang và bỏ qua bất kỳ phản hồi nào khác từ máy chủ.

Nếu yêu cầu đã được gửi đến máy chủ, máy chủ thường sẽ tiếp tục thực hiện nó. Tuy nhiên, tùy thuộc vào việc triển khai của máy chủ, có thể phát hiện kết nối bị ngắt. Có nghĩa là bạn không thể dựa vào thực tế là nó sẽ tiếp tục trong mọi trường hợp.

+5

Máy chủ, tuy nhiên, có thể phát hiện kết nối bị ngắt. Cho dù máy chủ sẽ tiếp tục thực hiện sau khi kết nối đã giảm phụ thuộc vào việc thực hiện máy chủ và bạn không thể dựa vào thực tế là nó sẽ tiếp tục trong mọi trường hợp. – Rithiur

+0

@Rithiur, tôi đồng ý với bạn, đó là một lời nhận xét tốt đẹp từ phía bạn. –

+0

Tôi đã kết hợp nhận xét vào câu trả lời –

3

Không có thông báo/yêu cầu "STOP" được xác định trong HTTP, vì HTTP là trạng thái không quốc tịch và việc dừng yêu cầu sẽ yêu cầu bạn biết ID của nó. Hoàn toàn tự nhiên, ngay sau khi yêu cầu HTTP truy cập vào một máy chủ, nó không thể dừng lại từ thế giới bên ngoài.

2

Máy chủ sẽ vẫn xử lý yêu cầu. Nếu bạn đang sử dụng Visual Studio, bạn có thể đính kèm vào các quy trình công nhân IIS để thấy rằng đây là trường hợp. Gỡ lỗi> Đính kèm vào Quy trình

4

Thực ra, loại gửi "thông báo dừng" bằng cách đóng kết nối. Điều này đúng chỉ khi nó vẫn đang chờ đầu ra từ yêu cầu chính (không phải khi tải xong nội dung và bắt đầu tải hình ảnh và nội dung). Vì vậy, bạn có thể phát hiện nếu người dùng nhấn nút dừng HOẶC có một số vấn đề với kết nối, khi bạn nhận được thông báo kết nối đóng.

Dưới đây là một số thông tin về hướng dẫn sử dụng của PHP: http://php.net/manual/en/features.connection-handling.php

Trên một mặt lưu ý - nó luôn luôn phụ thuộc vào việc thực hiện trình duyệt và không có cách nào đó để chắc chắn nếu người dùng nhấn nút dừng hoặc kết nối chỉ giảm.

+2

Đây thực sự là một chi tiết rất quan trọng và thường bị lãng quên. Trong khi không có lệnh "stop" rõ ràng, kết nối bị bỏ qua CÓ THỂ được phát hiện. Điều này sẽ, ví dụ, hủy bỏ hiện đang chạy PHP script theo mặc định. Điều này không xảy ra ngay lập tức khi người dùng nhấn dừng, vì vậy tập lệnh có thể kết thúc thực thi ngay cả khi dừng được nhấn (vì người dùng chỉ có thể đợi trên bộ đệm đầu ra của máy chủ chứ không phải bản thân tập lệnh). Trực tiếp từ url được dán: "Tuy nhiên, hành vi mặc định cho tập lệnh của bạn sẽ bị hủy khi máy khách từ xa ngắt kết nối." – Rithiur

+0

@Rithiur, @bisko và @Anton Gogolev - câu trả lời của Anton có mâu thuẫn với bạn không? Làm thế nào là "loại tin nhắn dừng" được gửi nếu HTTP là không quốc tịch và không có ID? Vui lòng cho một số người giải thích thêm. Cảm ơn –

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