IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

flush et affichage


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Points : 101
    Points
    101
    Par défaut flush et affichage
    salut tout le monde ...
    bon voila ... j'ai une application qui fait ça
    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
    26
    27
    28
    29
    30
    31
    32
     
    function affichage($buffer)
    {
     
    	//remplacement du titre de la page
    	$buffer = str_replace ('${title_page}',strip_tags($_SESSION['page']->title_page), $buffer);
     
      return $buffer;
     
    }
     
    ob_start("affichage");
     
     
    echo 'ob level='.ob_get_level();
     
     
     
    for ($i = 0; $i<4; $i++){
     
            echo "<br> Line to show.";
            echo str_pad('',6096)."\n";   
     
    	for ($j = 0; $j < ob_get_level(); $j++) { ob_end_flush(); }
        ob_implicit_flush(1);
     
            sleep(1);
    }
     
    echo "Done.";
     
    ob_end_flush();
    alors ce qui est super étonnant c'est que si j'exécute ce code tout seul ça marche ... je vois mes lignes arriver dans ma page petit à petit

    mais lorsque j'essaye d'exécuter ce code dans mon application (genre je fais un include de la boucle for (vu que le reste est déjà fait par l'appli)

    eh bien ça ne marche plus...
    j'ai un flush une fois tout fini ...

    j'ai du zapper un truc mais rien à faire ...



    si vous avez une idée

    thanks
    ++

  2. #2
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Points : 354
    Points
    354
    Par défaut
    le ob_start() peut être ? Cette fonction est-elle bien appelée avant ton include de la boucle for ?

    Au fait, pourquoi cherches-tu à faire un tel bout de code ?

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Points : 101
    Points
    101
    Par défaut
    en fait je me connecte à dmcloud, le service de videos de dailymotion pro pour envoyer des fichiers mais c'est très long du coup je veux afficher des messages pour que l'user sache que ça tourne toujours ... ça peut prendre une heure ..

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Points : 101
    Points
    101
    Par défaut
    j'ai ajouté un ob_start dans ma boucle mais ça ne change rien

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    echo 'ob='.ob_get_level();
    if (ob_get_level() == 0) ob_start();
     
     
    # We'll poll the status of one of our asset
    while(1) {
    $cnt ++;
    ob_start();
        # We fetch the informations of the asset 'mp4_h264_aac'
        $res = $dm->media->get_assets(array('id' => $media_id, 'assets_names' => array('mp4_h264_aac')));
        $res2 = $dm->media->get_assets(array('id' => $media_id, 'assets_names' => array('jpeg_thumbnail_source')));
        $res3 = $dm->media->get_assets(array('id' => $media_id, 'assets_names' => array('jpeg_thumbnail_small')));
        $res4 = $dm->media->get_assets(array('id' => $media_id, 'assets_names' => array('jpeg_thumbnail_large')));
        $res5 = $dm->media->get_assets(array('id' => $media_id, 'assets_names' => array('jpeg_thumbnail_medium')));
        //trace($res);
        //trace($res2);
        $asset = $res->mp4_h264_aac;
        $asset2 = $res2->jpeg_thumbnail_source;
        $asset3 = $res3->jpeg_thumbnail_small;
        $asset4 = $res4->jpeg_thumbnail_large;
        $asset5 = $res5->jpeg_thumbnail_medium;
    	echo '. ';
    	    echo str_pad('',6096)."\n";   
    	for ($j = 0; $j < ob_get_level(); $j++) { ob_end_flush(); }
        ob_implicit_flush(1);
     
        # If it is ready we ask for the url of the flash player
        if ($asset2->status == 'ready' && $asset->status == 'ready' && $asset3->status == 'ready' && $asset4->status == 'ready' && $asset5->status == 'ready') {
            echo "Your media is ready, here is the url for your embed code:\n";
            echo $dm->media->get_stream_url(array('id' => $media_id, 'asset_name' => 'mp4_h264_aac')) . "\n";
    break;
     
        # If the transcoding process failed we display an error
        } else if ($asset->status == 'error') {
            echo "Error while transcoding the media\n";
        }
        sleep(1);
    }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    pour ob_flush() et cie, j'ai jamais réussi à les faire fonctionner

    Nous avons choisi une méthode basé sur un rafraichissement ajax. Il suffit de découper la fonction php en petit bout ou d'appeler un index bien précis à chaque fois.
    Exemple:
    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
    <html>    
        <body>
            <div id="log">
            </div>
            <script type='text/javascript'>
                var iloop=0;
                function trace() {
                    new fojax().request('./worker.php?id='+iloop,
                    {
                        request:'GET',
                        onresponse:function(response, success) {
                            var d=document.getElementById("log");
                            var log=d.innerHTML;                        
                            var r=response.replace(/^\s+/g,'').replace(/\s+$/g,'') ;                        
                            d.innerHTML=log+response;
                            trace();                        
                        }
                    }
                )
                }
                trace();
            </script>
    </body>
    </html>

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Points : 101
    Points
    101
    Par défaut
    Oui, j'ai pensé à ajax ... mais le pb c'est que ça va me faire faire une gymnastique pour rien...
    1 - charger la page avec le javascript
    2 - lancer le transfert en ajax
    3 - tchecker l'avancement en ajax

    un peu complexe pour rien ...
    bon je crois que j'ai pas le choix ... m'enfin ça fait ch***

    ++

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 10h21
  2. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 22h00
  3. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 12h36
  4. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 10h43
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 22h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo