Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Batalkan permintaan AJAX yang tertunda di aplikasi PHP?

Kemungkinan rantai sebab akibat

  1. server tidak menyadari bahwa permintaan XHR dibatalkan, sehingga proses PHP yang sesuai tetap berjalan
  2. proses PHP ini menggunakan sesi, dan mencegah akses bersamaan ke sesi ini hingga proses tersebut dihentikan

Kemungkinan solusi

Mengatasi salah satu dari dua poin di atas memutus rantai dan dapat memperbaiki masalah:

  1. (a) ignore_user_abort adalah FALSE secara default, tetapi Anda dapat menggunakan pengaturan non-standar. Ubah pengaturan ini kembali ke FALSE di dalam kamu php.ini atau hubungi ignore_user_abort(false) dalam skrip yang menangani permintaan yang dapat diinterupsi ini.

Kelemahan:skrip baru saja berakhir. Pekerjaan apa pun yang sedang berlangsung akan dihentikan, mungkin meninggalkan sistem dalam keadaan kotor.

  1. (b) Secara default, PHP tidak akan mendeteksi bahwa pengguna telah membatalkan koneksi sampai ada upaya untuk mengirim informasi ke klien. Lakukan echo sesuatu secara berkala selama skrip Anda berjalan lama.

Kelemahan:data dummy ini mungkin merusak output normal skrip Anda. Dan di sini juga, skrip dapat meninggalkan sistem dalam keadaan kotor.

  1. Sesi PHP disimpan sebagai file di server. Pada session_start() , skrip membuka file sesi dalam mode tulis, secara efektif memperoleh kunci eksklusif di atasnya. Permintaan berikutnya yang menggunakan sesi yang sama akan ditunda hingga kunci dilepaskan. Ini terjadi ketika skrip berakhir, kecuali Anda menutup sesi secara eksplisit. Hubungi session_write_close() atau session_abort() sedini mungkin.

Kelemahan:saat ditutup, sesi tidak dapat ditulis lagi (kecuali jika Anda membuka kembali sesi , tetapi ini adalah peretasan yang agak tidak elegan). Juga skrip tetap berjalan, mungkin membuang-buang sumber daya.

Saya pasti merekomendasikan opsi terakhir.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menulis kueri SQL ke item SELECT dari tabel berikut

  2. Cara Mengaktifkan Log Kueri Lambat di AWS RDS MySQL

  3. Bagaimana membuat mysql mulai secara otomatis? (khusus linux-cli)

  4. Permintaan MySQL:Menggunakan UNION dan mendapatkan nomor baris sebagai bagian dari SELECT

  5. SQL - Perbarui banyak catatan dalam satu kueri