Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boucle et affichage du resultat

3 réponses
Avatar
Axelar
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

3 réponses

Avatar
Olivier Miakinen

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 ?

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.

Peut-on y remédier ?


Oui, tout simplement en lançant ton script en ligne de commande sur le
serveur.

Avatar
Francois Girault
[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 ...

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


Avatar
Thierry B.
--{ Axelar a plopé ceci: }--

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.