2009-04-30 8 views
0

Cette question est une suite à la précédente: Previous Questions. Donc, je configure ma page pour initier un appel ajax pour lancer le traitement de certains enregistrements. Et après chaque enregistrement, il met à jour une ligne dans une autre table pour garder une trace de l'état de ce processus. Après ce premier appel ajax est fait, j'ai un autre démarrage. C'est un Ajax.PeriodicalUpdater et il est configuré pour frapper un fichier qui interroge simplement cette ligne dans la base de données et renvoie l'état du processus d'origine. Donc, cela fonctionne parfaitement bien ... tant que le fichier qui fournit les mises à jour de statut est en dehors de mon application actuelle. Si je mets le fichier dans mon application, alors cela ne fonctionne pas correctement. Si je regarde firebug, l'appel PeriodicalUpdater ne récupère rien jusqu'à ce que l'appel ajax d'origine se termine, il se bloque juste comme si le fichier était bloqué et ne renvoyait rien.AJAX (prototype/php) en cours d'exécution 2 processus ajax se bloque jusqu'à ce que le premier est terminé

Toute cette application fonctionne à l'intérieur juste un cadre de base que nous utilisons. Rien de fou, ne gère que le routage, et les aspects de base du modèle etc ... Donc, toutes ces fonctions/fichiers sont à l'intérieur de cette application et tous ces appels ajax sont en cours d'acheminement à travers cela.

Qu'est-ce qui pourrait causer quelque chose comme ça?

Répondre

1

Est-ce que cela peut être dû à la limite de concurrent connections supported by a browser à un domaine particulier?

+0

Hmmm peut-être. Je vais le lire tout de suite. Mais l'instance où cela a fonctionné, quand j'ai déplacé le fichier hors de mon application, il était toujours sur le même serveur et le même domaine. –

+0

Cela ne semble pas être à l'origine du problème. Comme je l'ai dit, quand je déplace le fichier hors de l'application, ce qui pour cela est juste dans un répertoire, cela fonctionne très bien. Et j'ai été en mesure d'ouvrir 3 connexions ajax au fichier quand il est en dehors de mon application et ça fonctionne très bien. Ça a l'air d'être quelque chose à voir avec php et notre application, mais je ne suis pas sûr de ce qui ferait que le serveur pende comme ça. –

1

Ceci est dû à la sérialisation de la session PHP. Les données de session sont verrouillées jusqu'à ce que le processus PHP pour chaque requête ait fini d'écrire, de sorte que d'autres demandes dans la même session seront mises en file d'attente jusqu'à ce que le verrou soit libéré.

Si vos requêtes AJAX nécessitent un accès à l'état de la session, lisez les informations dont vous avez besoin et utilisez session_write_close() dès que possible pour libérer ces verrous.

+0

J'avais un problème très similaire et cela a fait l'affaire! Merci beaucoup. – codercake

Questions connexes