Pourquoi mes requêtes AJAX simultanées ne s'exécutent-elles pas en parallèle ?

Barbara Streisand
Libérer: 2024-10-29 19:25:02
original
678 Les gens l'ont consulté

Why Are My Simultaneous AJAX Requests Not Running in Parallel?

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal