fgetcsv

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

  • fgetcsv

    Ich habe folgendes Script und bekomme bei einer Größeren Datei ständig die Fehlermeldung:

    PHP-Code:
    Fatal errorAllowed memory size of 8388608 bytes exhausted (tried
     to allocate 1001 bytes
    in var/www/.../class_daten-einlesen.inc.php
     on line 13 
    Da die Datei aber nur ca. 700 KB gross ist, verstehe ich einfach nicht warum er abbricht.

    Die länge einer Zeile in der Datei "Preisliste.txt" überschreitet auch selten 50 Zeichen. Also an der Größe kann es nun wirklich liegen. Ich habe die Datei verkleiner und es mit zehn Zeilen ausprobiert. Dann ging es. Gibt es eine Größenbeschränkung bei fgetcsv? Wohl kaum, oder?

    Hier mein Script:

    PHP-Code:
    class daten_einlesen {
        function 
    get_csv($datei$trennzeichen$felder) {
            
    $data = array();
            
            
    $datei fopen("$datei""r");
            
            
    $i 0;
            
            while(
    $items fgetcsv($datei1000"$trennzeichen")) {

                foreach(
    $felder as $key => $value) {
                    
    $data[$i][$value] = "$items[$key]";    
                }
                
                
    $i++;
            }

            return 
    $data;
        }
    }

    $felder = array(
        
    => "artikelnum",
        
    => "preisgruppe",
        
    => "anzahl",
        
    => "preis",
        
    => "rabatt"
    );

    $data = new daten_einlesen();
    $data $data->get_csv("preisliste.txt""\t"$felder);

    foreach(
    $data as $key => $value) {
        
    $query "
            INSERT
            INTO preisliste
            (artikelnum, preisgruppe, anzahl, preis, rabatt)
            VALUES('
    $value[artikelnum]', '$value[preisgruppe]', 
    '
    $value[anzahl]', '$value[preis]', '$value[rabatt]')
        "
    ;
        
        
    #mysql_query($query);

    Da ich mehrere Shops betreibe und die Import-Dateien fast immer eine andere Struktur haben, möchte ich mir mit dem Script die Arbeit erleichtern. Ich müßte so nicht ständig die Tabellenstruktur meiner Datenbank ändern, sondern könnte die geänderte Struktur in meinem Script anpassen. Vorher arbeitete ich mit "LOAD DATA LOCAL" von MySQL. Der Import ging ins Sekunden.

    Könnt ihr mir sagen, warum mein o. g. Script bei größeren Dateien nicht funzt?

    Besten Dank!
    » http://www.htaccess-generator.com

  • #2
    Kann mir denn keiner helfen ;o(
    » http://www.htaccess-generator.com

    Kommentar


    • #3
      Mir ist nun aufgefallen, dass die Funktion fgetcsv ohne Probleme funktioniert wenn ich das Ganze nicht in einer Klasse schreibe. Gibt es für den Rückgabewert einer Klasse eine Größenbeschränkung?
      » http://www.htaccess-generator.com

      Kommentar


      • #4
        Kann ich mir nicht vorstellen aber warum du gerade hier eine Klasse verwendet hast, verstehe ich nicht wirklich. Eine normale Function reicht doch völlig aus!
        mens agitat molem

        Kommentar


        • #5
          PHP-Code:
          $data[$i][$value] = "$items[$key]"
          das ist ein Fall für goth

          Kommentar


          • #6
            ... ja ... solche Trolls können einen echt zur Verzweiflung bringen ... ... ich poste sowas jetzt immer im phpwtf ... natürlich mir Realname des Trolls ... dann können sich noch mehr Leute darüber abrollen ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar

            Lädt...
            X