[php]Affichage progressif

Résolu
Creutzou Messages postés 655 Statut Membre -  
Creutzou Messages postés 655 Statut Membre -
Bonjour,

J'ai réalisé un petit script en php qui nettoie ma base de donnée.
Le script me renvoie également tout un tas d'info.

Seulement, toutes les infos s'affichent une fois que le script à finis son execution.
Et j'aimerais savoir si il etait possible d'afficher au fur et à mesure les infos.

Si quelqu'un pouvait m'aiguiller sur le sujet, je vous en remercie.



--
Tout vient à point à qui sait attendre
~~ Cr3u7z0u ~~

21 réponses

  • 1
  • 2
  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    L'Ajax pourrait te servir dans ce contexte.
    Au lieu d'envoyer des "echo", ton script original écrit dans des fichiers (ou dans ta base de données).
    Ta page appelle régulièrement (setInterval en javascript) un script Ajax, qui va regarder dans la base de données / les fichiers les dernières informations de sortie de ton script PHP, et les renvoie à ta page.
    Dans ta page, tu traites ce texte de la façon dont tu veux en javascript. Tu peux l'afficher, l'utiliser pour remplir une barre de défilement, etc.

    Xavier
    2
  2. patrice86 Messages postés 1520 Statut Membre 125
     
    Tu places des echo à différent endroit de ton code qui affichent différente variable que tu veux
    0
  3. Creutzou Messages postés 655 Statut Membre 30
     
    J'ai déjà essayé, mais cela ne m'affiche rien immédiatement.
    0
  4. patrice86 Messages postés 1520 Statut Membre 125
     
    Tu peux copier ton code ou c'est trop long ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Creutzou Messages postés 655 Statut Membre 30
     
    il est un peu long mais la premiere ligne de mon code est
    echo "pouet pouet"; 


    et il ne s'affiche qu'a la fin de l'execution du script avec tout le reste.
    0
  7. patrice86 Messages postés 1520 Statut Membre 125
     
    Quand tu dis tout le reste c'est à dire tout ton code ?
    0
  8. Creutzou Messages postés 655 Statut Membre 30
     
    avec le reste des infos que j'affiche.

    mon code est structuré de la façon suivante :

    <?php 
    echo "pouetpouet"; 
    //instruction1 
    //affiche le resultats de l'instruction 1 
    
    //instruction 2  
    //affiche le resultats de l'instruction 2 
    
    //.... 
    //.... 
    echo "fin d'execution du script"; 
    ?> 
    


    et donc, comme je disais, mon "Pouet pouet" s'affiche en même temps que l'echo de "fin d'execution du script".

    (j'espere avoir été plus clair, sinon n'hesite pas à me le dire ;)
    0
  9. patrice86 Messages postés 1520 Statut Membre 125
     
    Essaye mais je n'y crois pas trop, de placer ton pouetpouet dans une variable et d'afficher la variable au début soit dans un echo ou essayer avec un die.

    Mais ça m'étonnerait que ça fonctionne
    0
  10. Creutzou Messages postés 655 Statut Membre 30
     
    ce n'est pas une erreure de programmation. Il doit y avoir une méthode pour faire ça, mais je ne sais pas comment.

    edit: comme prevue, le fais de passer par une vairable ne change rien.
    0
  11. patrice86 Messages postés 1520 Statut Membre 125
     
    Alors là je ne vois pas, je ne m'y connais pas encore suffisamment pour te donner une réponse désolé :/
    0
  12. Creutzou Messages postés 655 Statut Membre 30
     
    pas de problème, merci pour le coup de main déjà ;)
    0
  13. Creutzou Messages postés 655 Statut Membre 30
     
    peut être j'en ai aucune idée. Mais c'est vraie que par la ligne de commande, tout est écrit dans le terminal.

    je vais explorer la fonction Flush. Merci pour la piste !
    Tout vient à point à qui sait attendre
    ~~ Cr3u7z0u ~~
    0
  14. Creutzou Messages postés 655 Statut Membre 30
     
    Et bien je pense que c'est mon navigateur qui fait ça alors....

    car j'ai trouvé un petit exemple qui traite sur la fonction flush
    <?php
    ob_start();
    
    for($i=0;$i<70;$i++)
    {
        echo 'printing...<br />';
        ob_flush();
        flush();
    
        usleep(300000);
    }
    ?>
    


    Et dans mon navigateur, cela ne change rien du tout.
    (j'utilise FF4.01)
    0
  15. Creutzou Messages postés 655 Statut Membre 30
     
    sinon, cela peut il provenir de mon serveur apache ? ou php ?

    Un module à activé que j'aurais oublié ?
    0
  16. Profil bloqué
     
    comme dit, forcer l'affichage avec Flush() est aléatoire et marche mal.
    Tu peux essayer de modifier les directives dans php.ini:
    -> output_buffering=off
    -> implicit_flush=on

    Sans garantie :)

    Souvent le plus simple est de saucissonner le script PHP en plusieurs parties
    0
  17. Creutzou Messages postés 655 Statut Membre 30
     
    Sinon, j'ai entendu parler de l'ajax, cela n'a rien a voir ? ou pourrait il ressoudre mon "problème " ?

    je vais faire mes essaies en triffoullant la conf de php.

    0
  18. Creutzou Messages postés 655 Statut Membre 30
     
    Après modif de la conf php et redémarrage d'apache, cela n'a rien changé.

    Je vais voir pour structuer mon code autrement du coup.

    En revanche, si quelqu'un pouvait répondre à ma question concernant l'ajax :)

    En tout cas, merci Fobec.com et patrice86.
    0
  19. patrice86 Messages postés 1520 Statut Membre 125
     
    Je n'es rien fait au final désolé.
    0
  20. patrice86 Messages postés 1520 Statut Membre 125
     
    pour ajax, ça te permet de faire des pages web dynamique du côté du client. C'est dans du js.
    ça permet de 'mettre à jour' ta page web sans avoir à la rafraichir en entier, juste une partie de ta page.
    0
  • 1
  • 2