Les requêtes AJAX simultanées ne parviennent pas à s'exécuter en parallèle
On peut rencontrer un problème lorsque deux requêtes AJAX, une pour l'exportation de données vers un fichier XLSX et l'autre pour afficher les mises à jour de progression, ne parviennent pas à s'exécuter simultanément. La première requête, qui prend du temps, semble bloquer l'affichage des mises à jour de progression.
Explication :
Ce comportement peut être attribué au blocage de session. PHP stocke les données de session dans des fichiers par défaut. Lorsqu'une session est lancée avec session_start(), le fichier de session est ouvert en écriture et verrouillé pour empêcher les modifications simultanées. Par conséquent, toutes les requêtes PHP ultérieures activées pour la session doivent attendre la requête précédente pour libérer le verrou avant de continuer.
Solution :
Pour résoudre ce problème, un peut soit configurer PHP pour utiliser une méthode alternative de stockage de session (par exemple, base de données, memcached), soit fermer explicitement l'écriture de session après y avoir écrit des données. Cette dernière approche peut être réalisée en utilisant la fonction session_write_close(). Voici un exemple :
<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>
En fermant l'écriture de la session, on peut déverrouiller le fichier de session et permettre aux requêtes AJAX suivantes de se poursuivre sans attendre la fin de la première requête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!