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 :

alternative à feof


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 25
    Points : 18
    Points
    18
    Par défaut alternative à feof
    Bonjour,

    J'utilise la fonction feof pour déterminer la dernière ligne d'un fichier CSV, il s'agit d'une boucle de ce type:

    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
     
    $file_handle = fopen("test.csv", "r");
     
     
    if ($file_handle){
     
    while (!feof($file_handle) ) {
     
    $line_of_text = fgetcsv($file_handle, 1024, ";");
     
    ...
     
    }
     
    }

    Le problème, c'est que lorsque le fichier csv n'est pas en cache, la boucle devient infinie. Par contre, si je recharge la page une seconde fois, le problème n'apparaît plus.

    Cette méthode me retourne le même problème en pire (même lorsque le fichier csv est en cache) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $handle = fopen("test.csv", "r");
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    ...
    }
    Connaissez-vous une autre méthode qui me permettrait de lire toutes les lignes d'un fichier une seule fois?


    merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    En fait, je ne suis pas sûre que la boucle soit infinie: on dirait que le navigateur recharge la page depuis le début, une seconde fois, comme si la connexion était réinitialisée. Peut-être que le temps d'exécution maximal est dépassé?

    Je précise que le fichier fait environ 6mb

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    OK, je viens de comprendre, c'est un bug de firefox :

    Something good to note: Firefox by default, will load a page twice every time, if it is the first cache of the page. So, if you clear your browser cache, visit the site again, it will load twice that once until the cache is cleared, or overwritten.

    http://www.110mb.com/forum/how-to-st...-t27704.0.html

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

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Alternative au dbms_output ?
    Par dam1311 dans le forum Oracle
    Réponses: 10
    Dernier message: 24/11/2004, 08h11
  3. [xsl] alterner de style entre deux apply-template
    Par laouache dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 23/04/2004, 11h49
  4. Alternative(s) a CVS
    Par MrSimon dans le forum SCM
    Réponses: 3
    Dernier message: 06/03/2004, 11h37
  5. [FORMATION] Formations par alternance
    Par chobol dans le forum Etudes
    Réponses: 10
    Dernier message: 20/02/2004, 11h28

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