Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hủy yêu cầu AJAX đang chờ xử lý trong ứng dụng PHP?

Chuỗi nhân quả có thể xảy ra

  1. máy chủ không nhận ra rằng các yêu cầu XHR đã bị hủy và do đó, các quy trình PHP tương ứng tiếp tục chạy
  2. các quy trình PHP này sử dụng các phiên và ngăn truy cập đồng thời vào phiên này cho đến khi chúng chấm dứt

Các giải pháp khả thi

Nhấn vào một trong hai điểm trên sẽ phá vỡ chuỗi và có thể khắc phục sự cố:

  1. (a) ignore_user_abort FALSE theo mặc định, nhưng bạn có thể đang sử dụng cài đặt không chuẩn. Thay đổi cài đặt này trở lại FALSE trong bạn php.ini hoặc gọi ignore_user_abort(false) trong các tập lệnh xử lý các yêu cầu gián đoạn này.

Nhược điểm:kịch bản vừa kết thúc. Mọi công việc đang thực hiện đều bị gián đoạn, có thể khiến hệ thống ở trạng thái bẩn.

  1. (b) Theo mặc định, PHP sẽ không phát hiện ra rằng người dùng đã hủy bỏ kết nối cho đến khi thực hiện một nỗ lực gửi thông tin đến máy khách. Thực hiện echo một cái gì đó định kỳ trong suốt quá trình chạy tập lệnh dài hạn của bạn.

Hạn chế:dữ liệu giả này có thể làm hỏng đầu ra bình thường của tập lệnh của bạn. Và ở đây nữa, tập lệnh có thể khiến hệ thống ở trạng thái bẩn.

  1. Phiên PHP được lưu trữ dưới dạng tệp trên máy chủ. Trên session_start() , tập lệnh mở tệp phiên ở chế độ ghi, có được một khóa độc quyền trên đó một cách hiệu quả. Các yêu cầu tiếp theo sử dụng cùng một phiên được giữ cho đến khi khóa được giải phóng. Điều này xảy ra khi tập lệnh kết thúc, trừ khi bạn đóng phiên một cách rõ ràng. Gọi session_write_close() hoặc session_abort() càng sớm càng tốt.

Hạn chế:khi đóng, phiên này không thể được ghi nữa (trừ khi bạn mở lại phiên này , nhưng đây là một vụ hack có phần không phù hợp). Ngoài ra, tập lệnh vẫn tiếp tục chạy, có thể gây lãng phí tài nguyên.

Tôi chắc chắn khuyên bạn nên lựa chọn cuối cùng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_MERGE_PATCH () so với JSON_MERGE_PRESERVE () trong MySQL:Sự khác biệt là gì?

  2. Cách tắt chỉ mục trong innodb

  3. Chọn hàng ngẫu nhiên trong MySQL

  4. Kết nối Java với cơ sở dữ liệu MySQL

  5. bảng cập nhật mysql ajax theo lớp