php et bar de progression - PHP - Programmation
Marsh Posté le 22-03-2005 à 11:12:29
Rien à voir avec du PHP. C'est du JS qu'il te faudrait, mais je te conseille d'oublier cette mauvaise idée, car du coup, tu vas rendre ta page moins accessible...
Marsh Posté le 22-03-2005 à 11:32:47
Je crois que c'est aussi possible avec des activeX... Mais niveau accessibilité ... C'est vraiment terrible... Pourquoi ne pas juste mettre un petit gif qui dit "Chargement en cours"
Marsh Posté le 22-03-2005 à 11:40:38
je veux bien mettre un gif mais comment le voir apparaitre avant que ma page soit chargée.
J'ai essayé de faire :
Code :
|
mais mon message s'affiche seulement lorsque ma page est totalement affichée et donc complétement chargée
Marsh Posté le 22-03-2005 à 11:51:39
ob_start et ob_flush devraient t'aider
Marsh Posté le 22-03-2005 à 11:56:51
donc je mets mon image puis je fais
Code :
|
Marsh Posté le 22-03-2005 à 12:14:24
zizou39 a écrit : Bonjour à tous. J'ai une page qui m'affiche des stats et qui est très longue à chargé. Comment faire pour faire appaître une bar de progression pendant le temps de chargement. |
Faut se mettre la pression
Bon sinon ça serait plus un truc du genre :
ob_start();
//Affichage du gif de chargement
ob_flush();
//Traitement
Marsh Posté le 22-03-2005 à 13:07:46
zizou39 a écrit : Bonjour à tous. J'ai une page qui m'affiche des stats et qui est très longue à chargé. Comment faire pour faire appaître une bar de progression pendant le temps de chargement. |
Hmmm, je sais pas si tu es au courant, mais les navigateurs font deja ca ...
Regarde sur la barre de status en bas, tu verras qu'il y a une barre de progression pendant le chargement des pages.
zizou39 a écrit : je veux bien mettre un gif mais comment le voir apparaitre avant que ma page soit chargée.
|
Normal, "onload" est un evenement qui s'execute une fois la page chargee...
Personnellement je ne pense pas que ob_start et ob_flush soit vraiment la solution.
Je conseilerais plutot de metre un JS dans le head de la page, ce dernier affiche un message d'attente.
Et une fois la page chargee, un JS est lance grace a "onload" pour effacer le message d'attente.
Marsh Posté le 23-03-2005 à 04:41:47
cerel a écrit : Hmmm, je sais pas si tu es au courant, mais les navigateurs font deja ca ... |
Alors là je serais sacrément curieux de savoir pourquoi???
Avec les ob_start/ob_flush vu que c'est éxécuté côté serveur t'es sûr que ça sera compatible partout, ce qui n'est pas le cas du JS
Marsh Posté le 23-03-2005 à 08:22:12
Probablement parceque le ob_start / ob_flush est qqch de pas particulierement "Joli" (il peut afficher seulement des caracteres) et une fois le chargement fini, on doit afficher un lien pour rediriger sur une autre page (ou alors utiliser kan mm du JS). Si dans php il y avait la gestion des threads on pourrait probablement faire qqch de plus style (1 thread upload et l'autre affiche le %tage en meme temps) mais vu que c'est pas le cas ...
Marsh Posté le 23-03-2005 à 10:43:30
harrysauce a écrit : Alors là je serais sacrément curieux de savoir pourquoi??? |
Dans le premier message zizou39 dit qu'il a une page longue a charger.
Ici 2 possibilitees.
1) C'est une page longue a generer.
2) C'est une page longue a envoyer au client (ou le client mets du temps a charger la page.
1) Ob_start et ob_flush servent a utiliser un buffer. En gros, lors du traitement de son script, toutes le donnees seront stockees dans le buffer. Un fois que le script a fini de generer les stats, on fait un ob_flush et le buffer est envoye au client.
Probleme : Ca ne resout en rien le probleme. Le script metra toujours le meme temps pour generer ses stats.
2) Admetons que la generation soit rapide, mais que le probleme de lenteur vienne du client. Ben un ob_start et ob_flush ne vont rien resoudre puisque la meme quantitee de donees devra etre envoye. Seule diffenrece, avec un ob_start et ob_flush on envoi toutes les donees d'un coup, au lieu de les envoyer a comptes goutes.
Probleme : Ca ne resoud toujorus pas le probleme, car le client recoit toutes les donees d'un coup, et qu'il les recoive au compte goutes ou non ca ne change pas beacoup (ormis le temps de generation des stats).
Ce que je propose et de metre un script js dans le head de la page, et de ne pas utiliser ob_start ni ob_flush.
De cette facon, le client recoit les donees au compte goutes. Des que le head en entier est recu, le navigateur va executer le js a l'interieur. Ce dernier doit afficher un message d'attente.
Un fois toute la page recu, le "body onload" est execute par le navigatuer. A ce moment, le script lance doit effacer le message d'attente.
Et voila, nous avons mis en place un systeme qui affiche un message d'attente lors du chargement de la page. (Qui fonctionne dans le cas 1 et 2).
esox_ch a écrit : Probablement parceque le ob_start / ob_flush est qqch de pas particulierement "Joli" (il peut afficher seulement des caracteres) et une fois le chargement fini, on doit afficher un lien pour rediriger sur une autre page (ou alors utiliser kan mm du JS). Si dans php il y avait la gestion des threads on pourrait probablement faire qqch de plus style (1 thread upload et l'autre affiche le %tage en meme temps) mais vu que c'est pas le cas ... |
Pas du tout, ob_start et ob_flush servent a "bufferiser" le resultat. En gros on stocke tout dans un buffer avant de l'envoyer au client.
Ca resoud notament les scripts mal fait qui utilisent "header".
Ca permet egalement de compresser les donees a envoyer si le browser enface le supporte (donc du coup economiser en bande passante )
Marsh Posté le 23-03-2005 à 10:46:51
5° topic sur le sujet en faisant une recherche simple et rapide...
Marsh Posté le 23-03-2005 à 11:15:22
> Cerel, si avant de commancer a processer ses stat il fait un
echo "Veuillez patienter SVP";
ob_flush();
le client verra le message lui demandant de patienter et evitera de cliquer 15x sur la touche F5, c'est a ca que sert cette fonction (le truc de header , comme tu le dis, c'est en cas ou le script est mal fait)
Marsh Posté le 23-03-2005 à 12:36:50
esox_ch a écrit : > Cerel, si avant de commancer a processer ses stat il fait un |
oui mais pour faire propre, faudras quand meme du js pour l'enlever...
je propose quelque chose du genre...
http://kangol.prout.be/tests/load.html (ctrl-F5 si vous voulez retester)
Marsh Posté le 23-03-2005 à 12:40:35
Oui c'est pas mal un truc du genre ... Mais faudrait quand meme un moyen de l'enlever pour ceux sans JS
Marsh Posté le 22-03-2005 à 11:11:13
Bonjour à tous. J'ai une page qui m'affiche des stats et qui est très longue à chargé. Comment faire pour faire appaître une bar de progression pendant le temps de chargement.