Permintaan AJAX Tidak Berjalan Serentak
Dalam percubaan untuk mengoptimumkan prestasi, dua permintaan AJAX serentak digunakan dalam aplikasi web untuk menjejaki kemajuan daripada tugas yang panjang. Walau bagaimanapun, permintaan kedua terhenti sehingga yang pertama selesai.
Punca Punca: Sekatan Sesi
PHP, secara lalai, menggunakan pendekatan berasaskan fail untuk storan sesi. Apabila sesi dimulakan dengan session_start(), ia memperoleh kunci tulis eksklusif pada fail sesi. Akibatnya, semua permintaan lain yang cuba mengakses fail sesi akan disekat sehingga kunci dilepaskan.
Penyelesaian: Lumpuhkan Sesi Berasaskan Fail
Satu penyelesaian ialah melumpuhkan storan sesi berasaskan fail dengan mengubah suai fail konfigurasi php.ini:
session.save_handler = redis session.save_path = tcp://localhost:6379
Perubahan ini mengubah hala data sesi ke pelayan Redis, menghapuskan isu penguncian fail.
Sebagai alternatif: Tutup Tulis Fail Sesi
Sebagai alternatif, anda boleh melepaskan kunci tulis fail sesi dengan menutup fail sesi secara eksplisit selepas menulis data:
<?php session_start(); $_SESSION['foo'] = 'bar'; // Write data to the session session_write_close(); // Release the file write lock
Teknik ini membolehkan data sesi menjadi baca kemudian, tetapi menghalang permintaan lain daripada disekat oleh kunci tulis sesi.
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, bermain dengan format soalan: * Mengapa Permintaan AJAX Saya Tidak Berjalan serentak dalam PHP? (Fokus pada masalah) * Cara Mencapai Keselarasan Benar dengan AJAX Reques. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!