Bonjour tout le monde,
J'aurais besoin d'aide pour faire fonctionner une barre de progression AJAX. Essentiellement, je lis des données dans un fichier et je les insèrent dans la base de données. Comme ce traitement est long, je veux retourner quelque chose pour que l'utilisateur voit qu'il se passe quelque chose.
Du côté client, tout va bien, j'ai trouvé comment faire fonctionner le tout ainsi que comment dire à la page HTML d'aller interroger le serveur à intervalle régulier. Je me suis basé sur ce site pour y arriver:
http://www.redips.net/javascript/ajax-progress-bar/
CEPENDANT... c'est du côté serveur que j'ai de la misère. J'arrive sans problème à calculer le pourcentage de progression en faisant une première passe dans mon fichier pour compter le nombre de lignes total. Ensuite c'est simplement de calculer le tout par rapport à la ligne où je suis rendu.
Le problème que j'ai c'est que si je fais un "echo" dans mon script, je me ramasse avec une réponse serveur totalement aberrante du style:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 //Première passe pour lire le nombre de ligne au total $fichier = fopen($nomFichierProduit, 'r'); $nombreLignesFichierProduit = 0; $numeroLigneFichierProduit = 0; $pourcent = 0; while ($ligne = fgets($fichier)) { $nombreLignesFichierProduit++; } fclose($fichier); //Deuxième passe où j'insère dans la BD $fichier = fopen($nomFichierProduit, 'r'); while ($ligne = fgets($fichier)) { //requête d'insertion dans la BD $numeroLigneFichierProduit++; $pourcent = $numeroLigneFichierProduit / $nombreLignesFichierProduit * 100; }
<document>
<progres>1</progres>
<progres>2</progres>
<progres>3</progres>
<progres>4</progres>
<progres>5</progres>
<progres>6</progres>
<progres>7</progres>
<progres>8</progres>
<progres>9</progres>
<progres>10</progres>
</document>
And so on, comme on dit en anglais... C'est normal que ça fasse ça parce que le echo est toujours cumulatif, mais mon fichier fait pas loin de 20000 lignes alors vous imaginez la tête de ma réponse serveur quand je la demande par AJAX? À noter que ma méthode de calcul de pourcentage est correcte parce que je me retrouve quand même avec la bonne valeur... mais disons que dans ce cas-ci, l'historique ne m'intéresse pas, si je puis m'exprimer ainsi. Quelqu'un saurait comment éviter ce désagrément?
Merci d'avance
Osu
Partager