[PHP] Feststellen ob Datei komplett eingelesen wurde!

M3Y3R

Well-known member
ID: 336361
L
8 Mai 2006
1.608
60
Hallo,

ich lese eine Datei wie folgt ein:
PHP:
$parse_array_login = parse_ini_file($file_login, TRUE);

Nun stellt sich mir die Frage, wie ich feststellen kann ob die Datei komplett und ohne Fehler eingelesen wurde. Da ich nicht weiß, wie groß die Datei ist und was am Ende der Datei steht, kann ich auch nicht zum entsprechenden Punkt springen...

Wer kann mir helfen?


MFG
Papenburger
 
hi,

solange du keinen leeren string oder n false zurückbekommst kannst du glaub ich davon ausgehen das alles da ist.
 
PHP gibt aus: Array
Ob die Datei dann aber komplett geladen wurde ist immer noch fraglich, wobei sich das Ende der Datei immer ändert. Das heißt ich weiß nie, wie groß die Datei ist und was am Ende der Datei steht...
 
Ahoy,
ich schließ mich FAB an...

Wenn er das einlesen irgendwo abbrechen würde, dürfte kein Array rauskommen, sondern eher ne Fehlermeldung, ein leerer String oder ein false ;).
 
PHP gibt aus: Array
Ob die Datei dann aber komplett geladen wurde ist immer noch fraglich, wobei sich das Ende der Datei immer ändert. Das heißt ich weiß nie, wie groß die Datei ist und was am Ende der Datei steht...
Versuchs mal mit print_r()

EDIT: "toller tipp.. dangää! ^^" als Kommentar und dann rot?^^ Naja auch egal.
 
Zuletzt bearbeitet:
Ahoy,
ich schließ mich FAB an...

Wenn er das einlesen irgendwo abbrechen würde, dürfte kein Array rauskommen, sondern eher ne Fehlermeldung, ein leerer String oder ein false ;).

Falsch!
Wenn in der mitte der Datei ein Fehler ist, dann hat er den ersten Teil ja eingelesen und den gibt er auch aus! Genau das will ich ja verhindern!
 
wenn die datei wirklich fehlerhaft sein sollte (dateisystem im ar*** oder sonstirgendwas), dann bekommt php beim einlesen nen Fehler und wird dir dann false oder nen leeren String zurückgeben.
mit an sicherheit grenzender warscheinlichkeit würd ich mal sagen.

was meinst du denn genau mit "Wenn in der mitte der Datei ein Fehler ist" ?
was sollte da deiner meinung nach auftreten?
 
Parse_ini_file parst bis zur 59. Zeile wo der Fehler ist. Alles was vor dem Fehler steht wurde in einem Array geschrieben und kann ich ausgeben, was aber nicht Sinn der sache ist!

Es wird auch kein False oder 0 oder so zurückgegeben sondern lediglich ein Warning am oberen Bildschirmrand angezeigt!
 
stimmt, wir waren bei parse_ini_file. das hab ich aus den augen verloren. sry.

was steht denn in der zeile 59 in deinem ini file?

kann es vlt damit zusammenhängen:

Note: If a value in the ini file contains any non-alphanumeric characters it needs to be enclosed in double-quotes (").
oder
Characters {}|&~![()" must not be used anywhere in the key and have a special meaning in the value.

?
 
Das ist ja egal, was für ein Fehler das ist. Ich will ja nur abfragen ob die Datei richtig geladen werden konnte oder nicht...

Also ob es beim Laden der Datei schwierigkeiten gab!
 
dann könntest du zb. die datei mit
Code:
file()
in ein array einlesen und
Code:
count(file()) [ - zeilen mit kommentaren]
mit der anzahl der einträge in deinem $parse_array_login array vergleichen (mit den section- "heads").

damit würdest du dann merken ob du einen parse error in deinem ini file hattest.

...das wär aber mit abstand der dreckigste weg. was anderes fällt mir aber im moment auch nich ein.

könntest aber auch das file vorher einlesen und per regexp prüfen ob das ini- file ungültige zeichen enthält die parse_ini_file() zu einem parse error verleiten. wenn das nicht der fall ist kannst du dann davon ausgehen das $parse_array_login korrekt ist.

aber hinterher abfragen ob alles io ist geht meiner meinung nach nicht.
 
PHP:
function ini_error($errno, $errstr) {
   global $status;
   $status = false;
}

$status = true;
set_error_handler('ini_error');
//parse_ini_file();
restore_error_handler();

if(!$status) die('fehler'); //oder was auch immer

Damit kannste drauf reagieren wenn nen Warning auftrit...
 
stimmt, das gabs ja auch noch.....verdammt.

@zero: hey digger, lange nich mehr gesehen. bin aber bald wieder da.

Man sollte mal auf die Namen schauen :ugly: Da können wir ja mal wieder nen Bierschen trinken gehen... jedenfalls solang locke nicht wieder singt ;) Ich meld mich demnächst mal...

und damit das ganze nicht ganz so offtopic wird... Das mit count() ist ne blöde idee, nicht weil sie von dir kommt sondern weil sie blöd ist. ;) Du müsstest dabei eigentlich soviel beachten da kannste dir auch gleich nen ini parser bauen... das ist dann auch nicht viel aufwendiger. Wobei nen eigener INI Parser wahrscheinlich besser wäre in dem fall... da könnte man wenigstens ordentlich auf Fehler reagieren.
 
PHP:
function ini_error($errno, $errstr) {
   global $status;
   $status = false;
}

$status = true;
set_error_handler('ini_error');
//parse_ini_file();
restore_error_handler();

if(!$status) die('fehler'); //oder was auch immer

Damit kannste drauf reagieren wenn nen Warning auftrit...

Das Funktioniert und genau das habe ich gesucht! Danke!
 
Alternativ würde ich mal über Exceptions nachdenken, die sollten doch bei einer Warnung auch ausgelöst werden, oder erinnere ich mich da falsch?
 
Alternativ würde ich mal über Exceptions nachdenken, die sollten doch bei einer Warnung auch ausgelöst werden, oder erinnere ich mich da falsch?

Nein... PHP5 ist bei der Fehlerbehandlung absolut inkonsistent. Du bekommst Fehler per Rückgabewert, PHP-Errors oder Exceptions und für alles brauchst du eine eigene Fehlerbehandlung.
 
PHP Manual schrieb:
PHP:
$handle = fopen ("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
    $buffer = fgets($handle, 4096);
    echo $buffer;
}
fclose ($handle);
feof() gibt true aus wenn das Ende der Datei erreicht ist.