tester: Hilfe benötigt beim komplexeren Datei-einlesen...

moin,
hab ne datei, die ziemlich groß is und verarbeitet werden soll.
hierfür würde ich nun gerne die datei blockweise einlesen.
also verwende ich folgenden code:
do
{
        do
        {
            $data=fgets($xmlConn,32);
            if(strlen($data)==0)
                die("File zu kurz.");//break;
            $xmlFeed.=$data;
        }while(strpos($xmlFeed,"</SchemaCategory>")===false);
       //...
}feof($xmlConn);

nun soll jedoch nicht einfach das, was u.u. zu viel eingelesen wurde bei den jeweils 32 zeichen, verloren gehen, sondern beim nächsten durchgang der äußeren schleife wieder verwendet werden.
also hab ich mir das so gedacht:
            if(strpos($xmlFeed,'</SchemaCategory>')===false)
             $xmlFeed=substr(strstr($xmlFeed,'</SchemaCategory>'),strlen('</SchemaCategory>')-1);

damit sollte ja das über die grenzposition(</SchemaCategory>) hinausgeht, wieder der nächsten verarbeitung dienen.

aber leider scheint das nicht so zu funktionieren, wie geplant war :-(

und das schlimmste ist: ich weiß nicht warum bzw wo ein logischer fehler liegt!

daher bitte ich um Eure hilfe
und sag schonmal danke

  1. Moin Moin,

    folgende Fragen an Dich:

    1.) Wie groß ist die Datei (auch Größenordnung von - bis)?
      2.) Wird die ganze Datei, oder nur teile Verarbeitet?
      3.)
          a) Ist die Datei text/xml?
          b) Wenn ja wird der Dokumentenbaum benötigt?

    Zu Deinem Denkfehler:

    <SchemaCategory>Denke nie gedacht zu haben, denn das Denken von Gedanken ist gedankenloses Denken; erst beim Denken von Gedanken kommt man dann auf den Gedanken, daß das Denken von Gedanken gadankenloses Denken ist.</SchemaCategory>

    Diese Zeile sieht nach der Behandlung mit Deinem Script in 32-Byte-Schnipseln so aus:

    <SchemaCategory>Denke nie gedach
    t zu haben, denn das Denken von
    Gedanken ist gedankenloses Denke
    n; erst beim Denken von Gedanken
     kommt man dann auf den Gedanken
    , daß das Denken von Gedanken ga
    dankenloses Denken ist.</SchemaC
    ategory>

    Ups: String needle "</SchemaCategory>" ist in keinem Schnipsel enthalten ;)

    Gruß aus Berlin!
    eddi