CSV Datei zu groß ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • CSV Datei zu groß ?

    Hallo, wie wird in der Regel eine CSV Datei eingelesen ? Zeile für Zeile oder wird erst die ganze Datei in den Speicher eingelesen und dann Zeile für Zeile eingetragen ?

    Ich habe folgendes Problem. Sobald eine CSV Datei eine bestimmte größe hat, werden keine Daten eingelesen.


    PHP-Code:

    <?php
    // Ganze Datei in  Speicher einlesen
    $dateiname="./uploaded/".$nickname."_xxx.csv";
        
    $f=fopen($dateiname,"r");
        
    $puffer="";
        while (!
    feof($f)) {
            
    $puffer.=fgets($f); }
        
    fclose($f);
    ?>
    ....cut....


    PHP-Code:
    <?php
    // Uploaddatei öffnen
    $dateiname="./uploaded/".$nickname."_xxx.csv";
        if ( 
    $f=fopen($dateiname,"r"))
    {
        
    // Datei Zeile für Zeile einlesen
      
    $eingestellte_auktion=0;
            
    $laenge=filesize($dateiname);
            while(!
    feof($f))
            {
                
    $felder=fgetcsv($f,$laenge,";") ;
                if (
    count($felder)==21 )
    ?>
    Kann es sein das es daran liegt das die Datei erst in den Speicher gelesen wird ?

    Gruß Paulus

  • #2
    PHP-Code:
    if ($f fopen($dateiname,"r")) {
        
    $laenge filesize($dateiname);
        while (!
    feof($f)) {
            
    $felder=fgetcsv($f,$laenge,";"); 
    Lass dir $felder mal ausgeben ...

    Kommentar


    • #3
      Verstehe ich nicht so ganz. Ich habe nicht sehr viel Ahnung von PHP.

      Kannst Du das weiter definieren ?

      Kommentar


      • #4
        Also fgetcsv basiert auf fgets,
        fgets liest entweder bis zum nächsten zeilenumbruch, bis EOF oder bis $length-1, je nachdem was früher eintritt.
        In deinem Fall wird der Zeilenumbruch immer früher eintreten.

        Ab welcher größe deiner CSV Datei funktioniert es denn nicht mehr?

        stimmt der Wert vieleicht mit dem von MEMORY_LIMIT in der php.ini überein? Dann wirst du es wohl nicht schaffen größere Dateien einzulesen. (Standartmäßig sind es 8MB)

        Kommentar


        • #5
          Die Datei selber ist 50 MB groß. Alle Serverwerte sind am Limit. Stehen alle PHP Einstellungen auf 100 MB. Bis 15 MB Dateien werden eingelesen.

          Kommentar


          • #6
            sry gehirnfurz delete pls bin zu müd grad
            Die Milch bleibt ranzig!

            Kommentar


            • #7
              Mal folgendes probiert ?
              PHP-Code:
              $string file_get_contents("deine_datei.csv");
              var_dump($string); 
              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                [QUOTE]Original geschrieben von jahlives
                [B]Mal folgendes probiert ?
                PHP-Code:
                $string file_get_contents("deine_datei.csv");
                var_dump($string); 
                Was bewirkt das ganze denn ?

                Kommentar


                • #9
                  file_get_contents, var_dump

                  Das bewirkt das!
                  Und wenn du's probiert hättest, hättest du auch gleichs chreiben können, ob es funktioniert oder nicht...
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Hätte ich schon probiert wenn ich wüsste an welche Stelle das ganze kommt. Hab halt nicht so viel Ahnung von PHP und muss dann mehrmals testen.

                    Kommentar


                    • #11
                      Original geschrieben von mrhappiness
                      file_get_contents, var_dump

                      Das bewirkt das!
                      Und wenn du's probiert hättest, hättest du auch gleichs chreiben können, ob es funktioniert oder nicht...
                      Wenn ich den String einfüge, wird entweder alles auf dem Bildschirm ausgegeben oder es passiert garnichts. Jenachdem wo ich den hinsetze.

                      Kommentar


                      • #12
                        Könnte es sein, dass das bedeutet, dass die Datei sehr wohl komplett eingelesen werden kann?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Das weiss ich nicht. Ich weiss nur das bei so großen Dateien keine Daten eingetragen werden.

                          Kommentar


                          • #14
                            Probier jetzt folgendes:
                            PHP-Code:
                            $string nl2br(file_get_contents("deine_datei.csv"));
                            $fp fopen("test_datei.csv","w");
                            $string $string."<br />Testeintrag";
                            fputs($fp,$string);
                            fclose($fp); 
                            Jetzt öffnest du die Datei (test_datei.csv) und schaust ob am Ende der String "Testeintrag" steht. Wenn ja dann funzt es, wenn nein dann ist die Datei wirklich zu gross.

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Danke. Werde ich heute Abend mal testen.

                              Kommentar

                              Lädt...
                              X