|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Inscription : avril 2004 Messages : 219 ![]() |
Bonjour,
J'utilise PHP4, MySQL4, Smarty, AJAX et Prototype (http://kpumuk.info/ajax/ajax-enabled-smarty-plugins/) Je dois lire un fichier csv contenant 20 000 lignes et insérer un certain nombre de ces lignes en base. Cela prend beaucoup de temps je voulais donc faire une barre de progression pour afficher l'avancement. Lors de l'avancement de ce traitement, je mets un rapport en base de données avec le nombre de lignes ajoutées, ignorées et les lignes avec des erreurs. J'ai crée un événement (AJAX) qui va vérifier toutes les 2 secondes l'état, le récupère et l'affiche. J'initialise l'événement puis je lance l'exécution du traitement long. Le problème c'est que les événements s'exécutent tous d'un coup une fois la tache longue finie. Pouvez-vous me dire comment je pourrais régler ce problème ? (Si besoin, je peux ajouter le code) |
|
|
00
|
|
|
#2 |
|
Candidat au titre de Membre du Club
![]() |
euh... en utilisant pas PHP ?
![]() a priori c'est parceque tu as une seule connection à ta BDD (il te faut un pool) et xdu coup rp acceder à la BDD ton code venant de l'AJAX doit attendre que la connexion soit libérées par ton gros script de traimtement. la solution pourrait être d'ouvrir une nouvelle connexion simplement ? Autre solution, mettre tes données d'avancement dans la session au lieu de la BDD (plus rapide et sans doute plus propore pour ce que tu semble vouloir faire, au pire tu rentres le resultat a la fin du traitement). |
|
|
00
|
|
|
#3 | |||
![]() ![]() Inscription : janvier 2007 Messages : 9 315 ![]() |
Bonjour,
Citation:
Par exemple, il ne faut pas que les appels du "traitement long" et du suivi soient fait par la même fonction (c'est quand celle-ci se termine que tu reçois "tout d'un coup"). Pour qu'ils soient désynchronisés : 2 setTimeout() (ou setInterval() ) distincts appelant 2 fonctions distincts Appels asynchrones (les 2). Quelque chose comme Code :
A+ |
|||
|
|
00
|
|
|
#4 | ||||
![]() ![]() Inscription : avril 2004 Messages : 219 ![]() |
Ben normalement, je ne fais pas l'appel dans la même fonction, j'ai émulé l'accès en base de donnée et cela ne vient pas de là.
J'ai vérifié et tous mes événements sont bien exécuté d'un seul coup une fois le long traitement fini. Voici le code simplifié de mon template (smarty) : Code :
Code :
|
||||
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2007 Messages : 66 ![]() |
Moi j'ai le meme pb est ce que vs avez trouve une soulition ??
|
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2007 Messages : 9 315 ![]() |
|
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2007 Messages : 66 ![]() |
En fait moi mon problem est le suivant :
J'ai une fonction java script qui fait deux lignes: 1-submit d'un formulaire (son target est un iframe) 2-appel une autre fonction ajax chaque 1000 millisecondes document.getElementById('frm).submit(); fctName = "ajaxFunct()"; idTimeOut=setTimeout(fctName, 1000); le pb est que ma fonction ajax reste ds l'etat 1 (xhr.readyState=1 ) jusqua que le traitement du formulaire termine ,a noter que ce traitement est ds un autre serveur ajax ?? |
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2007 Messages : 66 ![]() |
Bonjour a tous ,
en fin le pb à été résolu : Ce qui bloque le traitement ds l'autre serveur (demander par ajax) c'est l'utilisation des sessions (autrement dit session_start) et oui ,par ce que le fichier de session est deja en lecture par le 1ere serveur et il est locked jusqua qu'il termine ... une soulition peut etre pour la barre de progression est d'utilser une variable coté base de données et lui demander chaque fois au lieu d'utiliser une variable de session . Merci et @+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com