Erst file_exists( oder gleich gzopen( ?

Hallo zusammen,
ich frag mich ob es eigentlich Sinn macht anstatt

$zp = @gzopen( $StockSite[AdressTransd_gz] , „r“);
if( $zp ){ …
gzpassthru($zp);

if( file_exists( $StockSite[AdressTransd_gz] )
&& $zp = @gzopen( $StockSite[AdressTransd_gz] , „r“) ){ …
gzpassthru($zp);

zu schreiben.

Ich meine wenn nicht geöffnet werden kann gibt doch gzopen
eh false zurück.
Wenn ich zuvor file_exists( verwende wird ja zweimal das Dateisystem angesprochen und wenn ich nur gzopen verwende doch nur einmal (intern in der Funktion) ?

Dann müsste doch Variante 1 besser sein - oder ?

Danke cu Sebastian

Ich würde so auf Anhieb ersteres bevorzugen. Denn es kann ja sein, dass das öffnen aus anderen Gründen nicht geklappt hat (z.B. keine Berechtigung oder Datei ist schon geöffnet). Da hilft Dir das file_exists natürlich nicht weiter und du rennst im unteren Beispiel trotz der if-Abfrage in nen Fehler rein.

Gruß
Benky

Hallo Sebastian,

wenn du die Datei öffen willst, dann öffne sie gleich und lesen den Error-Code aus. Sonst könnte es passieren, dass nach dem file_exist() -> true aber noch vor dem gzopen jemand anders (ein anderer PHP-Prozess, wer auch immer) die Datei löscht, und dann bist du keinen Schritt weiter.

Ein file_exist macht nur dann Sinn, wenn du (für den Augenblick) an dem Status interessiert bist, z.B. weil du den Wert eines Checkmarks setzen willst o.ä. - oder natürlcih, wenn du ganz sicher bist, dass kein anderr Prozess die Datei löschen und anlegen wird.

Alles Gute wünscht
…Michael