Hello,
Da wäre es doch schon dusselig, sich den gesamten Block mühevoll
reinzuholen, um ihn dann doch wieder nur zu zerlegen.
na-ja,
um via fsockopen Daten zu lesen nutze ich immer wieder die gleiche
uralte Methode, einfach weil sie funktioniert.
- Schleife mit fgets() bis zur Leerzeile, fuer die Haeders.
- Schleife mit fgets() bis zum feof(), fuer die eigentliche Datei.
Kann man im aktuellen Script jederzeit mit einer Pruefung beenden.
Das passt dann aber nur für http
PHP kann da auch mehr, indem es hier einfach wenig gefiltert hat aus der C-Schicht ;-)
http://de.php.net/manual/en/transports.php
Ich bevorzuge es außerdem, sinnvolle Timeout-Werte selber vorgeben zu können und nicht "zeilenweise", sondern tatsächlich blockorientiert zu lesen. Bei http mag das vielleicht ungeschickter sein, aber es funktioniert sicherlich genauso.
Außerdem müsste man bei fgets() auch jedesmal kontrollieren, ob das Zeilenende erreicht wurde, oder ob das Lesen vorher abgebrochen wurde wegen Erreichen der vorgegebenen Anzahl Bytes oder ob ein Fehler aufgetreten ist.
PHP ist hier meiner Meinung nach sehr schlampig mit der Fehlerauswertung, indem es die Fehlercodes einfach verschluckt.
Bei den ganzen Dateizugriffsfunktionen würde ich mir wünschen, entweder subsatantiierte Fehlernummern (auch "Erfolgsnummer") zu erhalten (NICHT Texte, deren Konsistenz in den unterschiedlichen Sprachversionen in Frage steht!), oder aber mich in keiner Weise darum kümmern zu müssen. Zweiteres ist aber wohl eine Utopie. So wie PHP das handhabt, ist es aber nicht Fisch und nicht Fleisch. Dabei wäre das ganz einfach ins Modell einzubauen. Unter der Verbindungskennung (Handle) könnte man doch entsprechende Funktionen anbieten, die Auskunft über die Zustände anbieten.
feof($fh) ist doch schon eine davon.
Eine zweite wäre "timeout($fh)", eine dritte "error_status($fh)" usw.
Wobei error_status($fh,$mask) sogar ein (16-)Bit-Muster mit den unterschiedlichen Möglichkeiten prüfen könnte, sodass Fehlerabfragen auch gebündelt stattfinden könnten.
Harzliche Grüße aus
Sankt Andreasberg
und Guten Rutsch
Tom
Nur selber lernen macht schlau
