Dateigröße vs. argument supplied for foreach() ??

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

  • Dateigröße vs. argument supplied for foreach() ??

    hallo alle,

    ich habe ein problem beim parsen von .log files: Ich habe einen Parser geschrieben, der Dateien mit kleiner Größe problemlos und wunschgemäß parst - sobald ich aber ein .log nehme, das ordentlich groß ist (ca. 11MB) fährt das Script mit Invalid "argument supplied for foreach() ..." vor die Wand.

    Kann es sein, dass diese Fehlermeldung tatsächlich an der Dateigröße festzumachen ist, denn wenn ich dieselbe datei in 8 Teile splitte, kann jedes Teil geparst werden.

    Das ginge natürlich auch, aber ich hätte schon gerne, daß der gute Parser auch mit grooßen Filed funktioniert.

    Bin php Neuling, deshalb wären Tips und Hinweise sehr willkommen.

    PHP-Code:
    $input file ($_FILES['path']['tmp_name']);

    # Run through the file and extract the infos needed
    foreach ($input as $line) {  
                    
    $ignore false;
        foreach (
    $ignorepatterns as $pattern) {
            if (
    preg_match ($pattern$line)) {
                
    $ignore true;
                break;
            }
        }
     
        if (! 
    $ignore) { 
            
    $exceptiondata[] = $line;
        }

    Das .log File wird über ein HTML Formular übergeben und landet in $input - außerdem gibt es 4 Array mit Zeichenfolgen, die ignoriert werden sollen (ignorepatterns) - w.g., bei kleinen Dateien kein problem, bei großen, wirft das Script o.g. Fehler. Ein var_dump($input) gibt mir ein Array vor Dateien, mit denen es geht und einen bool(false) bei denen es nicht geht.


    Jemand eine Idee ?

    Oder gibt es vielleicht eine geschmeidigere Methode ?

    Danke im vorraus - Grüße!
    k.

  • #2
    Naja, da wird wohl der Upload nicht funktionieren bei den größeren Dateien. Deshalb kriegst du ja auch ein bool(false) zurück. Dass du einen boolschen Wert nicht mit einer foreach durchlaufen kannst, sollte klar sein. Du musst deinen Fehler also nicht bei der foreach()-Schleife suchen.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar

    Lädt...
    X