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 :

[PHP-JS] Lire un fichier texte de façon temporisée


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut [PHP-JS] Lire un fichier texte de façon temporisée
    Salut,

    je cherche un moyen de lire un fichier texte ligne par ligne en php (ça, j'ai trouvé), mais de façon temporisée.

    C'est à dire que je voudrais lire la première ligne, attendre 3 secondes, et que la deuxième ligne apparaisse, etc.. jusqu'à la fin du fichier texte source.

    Quelqu'un a une idée ?

    Voilà le script de lecture actuel (non temproisé)

    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
    <?php
        // Ouverture du fichier en lecture [option "r"]
        // et récupération d'un pointeur (ou descripteur de fichier)
        // Ici, j'ai utilisé une petite astuce afin d'afficher
        // le contenu du fichier constituant ce script
        // j'ai donc utilisé __FILE__ au lieu de spécifier
        // un fichier par "/chemin/monfichier"
        // Le @ n'est absolument pas obligatoire mais il
        // evite l'affichage d'un message d'erreur (non controlé)
        // dans le cas où le fichier n'existe pas.
        $fd = @fopen("match.txt","r");
     
        // si fopen retourne faux c'est que le fichier
        // ne peut être ouvert en lecture
        if (!$fd) die("Impossible d'ouvrir le fichier");
     
        $i=1; // compteur de ligne
     
        // Lorsque nous atteindrons la fin du fichier
        // foef($fd) retournera faux
        // et la boucle while s'arrêtera
        while (!feof($fd)) {
     
            // Il est temps de lire une ligne du fichier
            // et en tout cas au maximum 1024 caractères
     
    		$ligne = fgets($fd, 1024);
     
            // Si la fin du fichier n'est pas atteinte
            // On peut maintenant afficher la ligne
            if (!feof($fd)) echo "$ligne<br>";
     
            $i++;
     
        }
     
        // On a fini, on ferme !!
        fclose($fd);
    ?>
    Configuration: Windows 2000
    Firefox 2.0.0.4

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    A mon avis le meilleur moyen si tu veux effectuer ce type d'effet sur un navigateur c'est encore d'utiliser du Javascript

    Tu envoies tout ton texte et tu fais en sorte qu'avec du JS il s'affiche au fur et à mesure en utilisant un timer (setInterval).
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci pour cette réponse.

    Je penchais pour une solution de ce type, mais en gardant du php pour lire le texte... mais je n'arrive à rien de concret !
    :-)

  4. #4
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    J'avais déjà essayé, mais c'est sans effet... quel que soit l'endroit où je le mets dans le code.

    Peut être que mon hébergeur (free) ne prend pas en compte la fonction ?

  6. #6
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Teste ceci chez Free :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
     
    // Heure actuelle
    echo date('h:i:s') . "<br />\n";
     
    // stoppe pour 5 secondes
    sleep(5);
     
    // retour!
    echo date('h:i:s') . "\n";
     
    ?>
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Ca donne ça :

    11:38:33
    11:38:33

  8. #8
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Donc ca ne fonctionne pas, et je viens de vérifier Free a désactivé cette fonction, donc dommage.
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé un script qui "émule" la fonction sleep, mais je n'arrive pas à l'imbriquer dans mon script... Help !
    ;-)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function Nsleep($nbsec) //$nbsec c'est le nombre de secondes
    {
        $nbsec = abs ( (int) $nbsec) ;
        $tps=time();
        while($tps+$nbsec>=time()) ;
    }

  10. #10
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    En fait il y a une erreur dans la fonction, j'ai corrigé :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($tps+$nbsec>=time()) ;
    devient
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($tps+$nbsec>time()) ;

    et pour l'exemple :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    function Nsleep($nbsec) //$nbsec c'est le nombre de secondes
        {  
            $nbsec = abs ( (int) $nbsec) ; 
            $tps=time();
            while($tps+$nbsec>time()) ; 
        }
    echo date('h:i:s') . "<br />\n";
    echo Nsleep(5);
    echo date('h:i:s') . "\n";
     
    ?>
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    MERCI, Ca marche (!) avec l'exemple, puisqu'on obtient

    03:10:17
    03:10:22
    Par contre le résultat s'affiche en une seule fois.

    Comment faire pour que la ligne 1 apparaisse à l'utilisateur, puis la 2e X secondes plus tard , puis la 3e, etc. ?

  12. #12
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Je doute que celà puisse être facile en PHP.
    Etant donné que ta page est interprété par le serveur, selon ce que tu veux faire, il faudrait recharger la page en conservant son dernier affichage et en réaffichant le tout...(remarque pourquoi pas...)
    Mais Javascript semble plus approprié pour ca...
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  13. #13
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Sinon tu peux essayer avec les méthodes ob_start, ob_flush et ob_end_flush pour voir si cela convient a tes besoins.
    Tout énigme a une solution ! Tout est question de discipline !

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par blueice
    Je doute que celà puisse être facile en PHP.
    Etant donné que ta page est interprété par le serveur, selon ce que tu veux faire, il faudrait recharger la page en conservant son dernier affichage et en réaffichant le tout...(remarque pourquoi pas...)
    Mais Javascript semble plus approprié pour ca...
    Mouaif, je vais essayer de voir avec une base MySQL, histoire de lire une ligne, la stocker, l'afficher, lire la deuxième, la stocker, l'afficher avec la première, etc.

    Peut-être que javascript pourrait me faire les rechargement de page...

    Eh beh, et dire que je pensais ça tout bête !
    :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. FLUX - Façon efficace de lire un fichier texte
    Par vdumont dans le forum C++
    Réponses: 4
    Dernier message: 18/05/2006, 19h16
  2. [Applet] lire un fichier texte
    Par lebesnec dans le forum Applets
    Réponses: 2
    Dernier message: 07/07/2005, 10h09
  3. Réponses: 1
    Dernier message: 24/11/2004, 16h54
  4. [Fichier] Lire un fichier texte long
    Par _Eric_ dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 18/08/2004, 15h22
  5. Réponses: 2
    Dernier message: 26/05/2004, 17h53

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