Discussion:
Boucle et affichage du resultat
(trop ancien pour répondre)
Axelar
2007-07-04 14:42:09 UTC
Permalink
Bonjour

Afin d'apprendre PHP je réinvente la roue et j'essaie de faire une
galerie en PHP, j'ai donc entre autre une page d'administration qui me
permet de renseigner une base de données, de créér des vignettes, de
créér un fichier zip des galeries, etc...

Si je demande par exemple la création de vignettes pour une ou
plusieurs galeries, une boucle est censée pour chaque fichier créér
une version plus petite de la photo, la stocker dans un répertoire
nommé vignettes puis m'afficher un message du type "Photo 1.jpg -
Insérée dans la base - Vignette construite - Ajoutée à l'archive zip"

Je m'attends donc qu'à chaque passage dans la boucle une nouvelle
ligne s'affiche, au lieu de ça, le début de ma page s'affiche, la
boucle fait son travail pour tout un lot de photos et me sort en une
seule fois les X lignes de résultat.

Pourquoi la page n'affiche-t-elle pas chaque message au fur et à
mesure que les photos sont traitées ?
Peut-on y remédier ?

Merci d'avance et bonne journée
Olivier Miakinen
2007-07-04 14:51:24 UTC
Permalink
Post by Axelar
Si je demande par exemple la création de vignettes pour une ou
plusieurs galeries, une boucle est censée pour chaque fichier créér
une version plus petite de la photo, la stocker dans un répertoire
nommé vignettes puis m'afficher un message du type "Photo 1.jpg -
Insérée dans la base - Vignette construite - Ajoutée à l'archive zip"
Ton script PHP est appelé directement sur le serveur, ou bien tu passes
par un navigateur web et une requête HTTP ?
Post by Axelar
Je m'attends donc qu'à chaque passage dans la boucle une nouvelle
ligne s'affiche, au lieu de ça, le début de ma page s'affiche, la
boucle fait son travail pour tout un lot de photos et me sort en une
seule fois les X lignes de résultat.
Pourquoi la page n'affiche-t-elle pas chaque message au fur et à
mesure que les photos sont traitées ?
Si c'est à partir d'un navigateur web, ce comportement est normal. À la
limite, tu pourrais même ne rien voir s'afficher du tout jusqu'à ce que
tout soit fini et que l'ensemble s'affiche d'un seul coup. Ceci est dû
à deux choses : d'une part au fait que le serveur peut décider de
n'envoyer que des pages TCP de 4 ko par exemple ; d'autre part à celui
que le navigateur peut décider d'optimiser l'affichage en temporisant
celui-ci tant qu'il reste des données à recevoir.
Post by Axelar
Peut-on y remédier ?
Oui, tout simplement en lançant ton script en ligne de commande sur le
serveur.
Francois Girault
2007-07-04 23:59:33 UTC
Permalink
Post by Olivier Miakinen
[itérations longues sur le serveur]
Ton script PHP est appelé directement sur le serveur, ou bien tu passes
par un navigateur web et une requête HTTP ?
Telle est la question ...
Post by Olivier Miakinen
Peut-on y remédier ?
Oui, tout simplement en lançant ton script en ligne de commande sur le
serveur.
Ou moins efficace, mais nécessaire en l'absence de shell sur le serveur
: travailler coté client et se débrouiller pour obtenir une boucle de
requêtes http.

Sans javascript, je ne vois qu'une solution par header("location:
urlvignettesuivante ") à chaque fin d'itération. Mais de nos jours, avec
XmlHttpRequest, on peut répondre à la demande de l'op sans soucis, mais
c'est vers f.c.l.javascript qu'il faut se tourner.
--
FG
Thierry B.
2007-07-05 04:13:33 UTC
Permalink
--{ Axelar a plopé ceci: }--
Post by Axelar
Pourquoi la page n'affiche-t-elle pas chaque message au fur et à
mesure que les photos sont traitées ?
Peut-on y remédier ?
http://php.net/manual/en/function.flush.php
Aie... ça n'a pas l'air gagné...
--
Un économiste, c'est un expert qui saura demain pourquoi ce qu'il
a prédit hier ne s'est pas produit aujourdhui.
Continuer la lecture sur narkive:
Loading...