Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Permintaan AJAX Saya Sekat Satu Sama Lain dalam PHP?

Mengapa Permintaan AJAX Saya Sekat Satu Sama Lain dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 16:59:30222semak imbas

Why Do My AJAX Requests Block Each Other in PHP?

Permintaan AJAX Serentak Saling Sekat

Dalam situasi tertentu, permintaan AJAX mungkin tidak berjalan serentak, menyebabkan tingkah laku yang tidak dijangka. Isu ini dibangkitkan apabila pengguna menghadapi masalah dengan dua permintaan AJAX serentak yang direka bentuk untuk menunjukkan kemajuan semasa mengeksport data ke fail XSLX. Permintaan pertama mencetuskan skrip PHP yang panjang, dan permintaan kedua menyemak kemas kini kemajuan pada selang masa yang tetap.

Setelah disiasat, didapati bahawa permintaan AJAX kedua sedang menunggu untuk yang pertama selesai sebelum melaksanakan. Tingkah laku ini dikaitkan dengan penyekatan sesi dalam PHP.

Penyekatan Sesi dalam PHP

Secara lalai, PHP menggunakan fail untuk menyimpan data sesi. Apabila sesi dimulakan (menggunakan fungsi session_start()), PHP membuka fail sesi untuk menulis dan menguncinya untuk memastikan akses eksklusif. Mekanisme penguncian ini menghalang permintaan serentak daripada mengakses fail secara serentak. Akibatnya, permintaan AJAX kedua terpaksa menunggu yang pertama selesai dan membuka kunci fail sesi sebelum ia boleh dilaksanakan.

Penyelesaian

Penyelesaian untuk ini Isunya ialah untuk melumpuhkan storan sesi berasaskan fail lalai PHP atau menutup fail sesi secara eksplisit selepas menulis kepadanya, melepaskan kunci.

Untuk melumpuhkan storan sesi berasaskan fail, tambah baris berikut pada php.ini anda fail:

session.save_path =

Untuk menutup fail sesi secara eksplisit, gunakan fungsi session_write_close():

<code class="php"><?php
    session_start();

    $_SESSION['foo'] = 'bar'; // Write data to the session

    session_write_close(); // Close the session file

    echo $_SESSION['foo']; // You can still read from the session.
?></code>

Dengan melaksanakan penyelesaian ini, anda boleh memastikan bahawa permintaan AJAX kedua akan dilaksanakan serentak dengan yang pertama, membolehkan anda menjejak kemajuan tanpa berlengah-lengah.

Atas ialah kandungan terperinci Mengapa Permintaan AJAX Saya Sekat Satu Sama Lain dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn