Permintaan AJAX Serentak Gagal Berjalan Selari
Seseorang mungkin menghadapi masalah di mana dua permintaan AJAX, satu untuk mengeksport data ke fail XLSX dan satu lagi untuk memaparkan kemas kini kemajuan, gagal dijalankan serentak. Permintaan pertama, yang memakan masa, nampaknya menyekat kemas kini kemajuan daripada dipaparkan.
Penjelasan:
Tingkah laku ini boleh dikaitkan dengan penyekatan sesi. PHP menyimpan data sesi dalam fail secara lalai. Apabila sesi dimulakan dengan session_start(), fail sesi dibuka untuk menulis dan dikunci untuk mengelakkan pengubahsuaian serentak. Akibatnya, sebarang permintaan PHP didayakan sesi berikutnya mesti menunggu permintaan sebelumnya untuk melepaskan kunci sebelum meneruskan.
Penyelesaian:
Untuk menyelesaikan isu ini, satu boleh sama ada mengkonfigurasi PHP untuk menggunakan kaedah storan sesi alternatif (cth., pangkalan data, memcached) atau menutup sesi tulis secara eksplisit selepas menulis data kepadanya. Pendekatan terakhir boleh dicapai menggunakan fungsi session_write_close(). Berikut ialah contoh:
<code class="php"><?php session_start(); // start session // Write data to session (if necessary) session_write_close(); // close session file, releasing lock // Read or use session data as needed</code>
Dengan menutup sesi tulis, seseorang boleh membuka kunci fail sesi dan membenarkan permintaan AJAX seterusnya diteruskan tanpa menunggu permintaan pertama selesai.
Atas ialah kandungan terperinci Mengapa Permintaan AJAX Serentak Saya Tidak Berjalan Selari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!