Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2011, 16h00   #1
Membre à l'essai
 
Clémentine
Inscription : juin 2006
Messages : 128
Détails du profil
Informations personnelles :
Nom : Clémentine
Âge : 24

Informations forums :
Inscription : juin 2006
Messages : 128
Points : 21
Points : 21
Par défaut Boucle Ajax qui oublie des tours

Bonjour,

j'utilise le code suivant:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
for (i=1; i<=20; i++){
 
	$.ajax({
		type: "POST",
		url: "convertpdf.php",
		data: "eleve="+i,
                success: function(retour){
		alert("fini"+i);
		return;
               }
	});
 
}
L'objectif est de lancer 20 fois le script convertpdf.php avec un paramètre différent. Chaque script génère un fichier pdf
Or à chaque fois il me manque au final un ou 2 fichiers pdf (pas forcément les mêmes). Chaque script pris isolé fonctionne mais je pense que le serveur doit avoir du mal à gérer la boucle.

D'où cela peut-il venir ?
Comment le corriger ?

Merci
Mandarine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 16h03   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Le nombre de requêtes simultanées est limité en général à 3
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 16h13   #3
Membre à l'essai
 
Clémentine
Inscription : juin 2006
Messages : 128
Détails du profil
Informations personnelles :
Nom : Clémentine
Âge : 24

Informations forums :
Inscription : juin 2006
Messages : 128
Points : 21
Points : 21
Qui détermine se nombre (visible dans le phpinfo ?)

Comment faire pour corriger cela (mettre un sleep ? ou quelque chose de plus propre serait mieux...).

Merci
Mandarine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 16h19   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
C'est le navigateur.
Par exemple pour Firefox, tu le retrouve en tapant about:config dans la barre d'adresse et sous l'option network.http.pipelining.maxrequests.

Ceci dit, dans ton cas, je trouverais plus cohérent de faire une seule requête et de prévoir les 20 traitements dans ton script.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 16h21   #5
Membre à l'essai
 
Clémentine
Inscription : juin 2006
Messages : 128
Détails du profil
Informations personnelles :
Nom : Clémentine
Âge : 24

Informations forums :
Inscription : juin 2006
Messages : 128
Points : 21
Points : 21
Je ne peux pas faire une seule requête car j'atteint alors la memory_limit de mon serveur mutualisé.
Découper en petite requête permet de contourner ce problème.

Je peux attendre que les X premières aient finis puis lancer les suivantes ?
Mandarine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 16h36   #6
Membre habitué
 
Inscription : octobre 2009
Messages : 122
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 122
Points : 116
Points : 116
A mon avis, il faudrait que tu passes l'appel ajax en synchrone pour que la boucle attende le résultat du traitement pour continuer
bewidia est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/06/2011, 17h16   #7
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Si tu veux continuer en asynchrone, tu devrais essayer de vérifier que le fichier a été créé avant de lancer la requête suivante
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 17h35   #8
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Citation:
Envoyé par Sharcoux Voir le message
Si tu veux continuer en asynchrone, tu devrais essayer de vérifier que le fichier a été créé avant de lancer la requête suivante
Oui, par exemple, au lieu de passer par une boucle, gérer un compteur dans le callback qui déterminerait la nouvelle valeur a envoyer ou l'arrêt des requêtes.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 22h05   #9
Membre à l'essai
 
Clémentine
Inscription : juin 2006
Messages : 128
Détails du profil
Informations personnelles :
Nom : Clémentine
Âge : 24

Informations forums :
Inscription : juin 2006
Messages : 128
Points : 21
Points : 21
Oui mais comment faire sans boucle sachant que le nombre d'appel peut varier en fonction de l'utilisateur.

Je ne vois pas trop comment gérer avec les call back sans boucle.

Une idée de code ?
Mandarine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h42.


 
 
 
 
Partenaires

Hébergement Web