2009-04-02 31 views
5

Nếu tôi thực hiện cuộc gọi AJAX, cuộc gọi AJAX sẽ bị hủy nếu người dùng nhấn "ESC" hoặc thoát khỏi trang đó?Các tiến trình PHP có được gọi là thông qua AJAX bị hủy bỏ trên "ESC" không?

Nếu cuộc gọi AJAX bị hủy, tập lệnh PHP của tôi sẽ tiếp tục chạy cho đến khi nó hoàn thành những gì nó đang thực hiện (không giới hạn thời gian hoặc bất kỳ cấu hình máy chủ nào khác). cùng thời điểm với con của Apache?

Nếu quá trình này bị giết chết với con Apache ngay cả khi nó không kết thúc, cách tốt nhất để giữ sống là gì hoặc tôi nên cân nhắc lựa chọn nào khác? (ZendX_Console_Process_Unix không phải là một tùy chọn).

Cảm ơn!

Khám phá sau:

Cuộc gọi AJAX thực sự bị hủy nếu tôi nhấn "ESC" trong Firefox (đã chọn trong firebug). Quá trình PHP tiếp tục và không bị ảnh hưởng bởi nhấn ESC hoặc đóng tab.

+0

Làm cách nào máy chủ có thể biết người dùng nhấn esc? –

+0

Điều này sẽ cho phép máy chủ biết người dùng nhấn esc. "echo 1>/proc/sys/kernel/more_magic" (chỉ dành cho Linux!) – epochwolf

Trả lời

3

Nếu quá trình máy chủ bắt đầu trước khi người dùng kết thúc cuộc gọi ajax (đóng cửa sổ hoặc chuyển sang trang web khác) thì nó sẽ được thực hiện cho đến khi kết quả cuối cùng. Nhưng cuộc gọi ajax bị gián đoạn (nghĩa là việc truyền dữ liệu chưa hoàn thành) máy chủ sẽ không xử lý cuộc gọi.

Lưu ý: nhấn ESC sẽ không kết thúc cuộc gọi ajax, trừ khi bạn đã javascript hoạt động phím đó.

+1

Nó hủy cuộc gọi ajax ngay cả khi nó không được viết. Mặc dù phần đầu tiên của câu trả lời là đúng :) –

-1

Một lưu ý ... nếu bạn gọi cuộc gọi AJAX của mình từ siêu kết nối, sử dụng thuộc tính href, thì CÓ, người dùng có thể nhấn ESC và dừng truyền.

<a href="javascript:doFoo();">This can be canceled by pressing ESC</a> 

<a href="#" onclick="doFoo();">This can NOT be canceled by pressing ESC</a> 
+0

Quá trình này sẽ bị hủy theo bất kỳ cách nào được gọi. (đã thử bằng phương thức href, onclick và addEvent qua mootools.) –

+0

không chắc chắn cách kiểm tra của bạn hoạt động, nhưng tôi biết thực tế rằng sự kiện onclick không thể bị người dùng hủy. Tôi sẽ xem nếu tôi có thể tìm thấy một testcase để chứng minh. – scunliffe

+0

hhm, tôi sẽ phải lấy lại điều đó ... có một số điều kiện khác cần thiết mà tôi không cân nhắc. – scunliffe

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