![]() |
ZipArchives
Hallo zusammen,
ich erzeuge online auf einem Webserver ein ZIP Archiv. Das funktioniert auch wunderbar, nur leider zeigt er mir erst bei einem Refresh die richtige Dateigröße an :
Code:
Meine Vermutung geht dahin, dass die ZIP-Funktion close noch nicht komplett ausgeführt wird und ich deshalb keine Dateigröße angezeigt bekomme. Liege ich mit meiner Vermutung richtig und/oder wo ist der Fehler ?
function downloadDirZIP($zipcontent, $zipname)
{ $zipfilename = $zipname.".zip"; chdir("/var/www/domain/httpdocs/tmp/"); ftp_sync($_SESSION['cid'],$zipcontent); $ar_zipfiles = ftpRecursiveFileListing($_SESSION['cid'],'/'.$zipcontent); $zip = new ZipArchive(); if ($zip->open("./".$zipfilename, ZIPARCHIVE::CREATE)!==TRUE) { exit("ZIP-Archive <$zipfilename> konnte nicht geöffnet werden.\n"); } // Add the selected files and directories to the zip archive foreach ($ar_zipfiles as $k => $v) { for($i=0; $i<="" code=""> if (!is_dir("./".$k."/".$ar_zipfiles[$k][$i])) { $zip->addFile("./".$k."/".$ar_zipfiles[$k][$i], $k."/".$ar_zipfiles[$k][$i]); } } } // To close the zip archive $zip->close; echo "Dateigröße 1 : ".filesize("./".$zipfilename)." "; } Crosspost ![]() Gruß Rolf |
AW: ZipArchives
Hallo zusammen,
hat keiner eine Idee oder vielleicht eine Lösung, warum keine Dateigröße angezeigt wird ? |
AW: ZipArchives
Hmmm, du könntest über den HTTP-Header oder via Meta-Tag sagen, daß sich diese HTML/Text-Datei oft ändert und der Browser sie jedemal komplett laden soll.
|
AW: ZipArchives
Warum machst du das chdir("/var/www/domain/httpdocs/tmp/");
und gibst es nicht im Filename mit an ? Was sagen den die Apache Logs ? |
AW: ZipArchives
Zitat:
Zitat:
Das Problem mit der Anzeige der Dateigröße besteht nur dann, wenn die Datei in dem TMP-Verzeichnis noch nicht existiert. Zitat:
|
AW: ZipArchives
Zitat:
|
AW: ZipArchives
Zitat:
|
AW: ZipArchives
Es könnte auch am Dateisystemcache des Apache liegen.
Es gibt da irgendwo einen PHP-Befehl, um Diesen zu leeren. (aber sei sparsam mit sowas) Also nach dem Erstellen der Datei. Nee, daß die Dateigröße selber nicht in den Header kommt, ist auch klar. Du gibst ja nicht die Zip-Datei zurück, aber bei sowas würde es sich anbieten (die Dateigröße im HTTP-Header wird in vielen Downloadscripten gerne vergessen). Aber daß beim näcsten Laden die datei neu vom Server abgefragt und nicht einfach die Browsercache verwendet wird, daß kann man beeinflussen. Also wenn das Problem in dieser Browsercache liegen würde. |
AW: ZipArchives
Zitat:
|
AW: ZipArchives
Wenn filesize in der "alten" Cache die Dateigröße ausließt, dann muß Diese nicht mit der Datei im "aktuelleren" Dateisystem übereinstimmen. :zwinker:
Ich hatte da mal das Problem, daß eine gelöschte Datei noch für eine Weile als existent angezeigt wurde. Als ich dann die Cache geleert hatte, ging es plötzlich. |
AW: ZipArchives
Hallo
ich habe da den Befehl
Code:
gefunden. Laut Beschreibung löscht er den Cache, wo auch filesize drauf zugreift. Er wirkt nur nicht. Die Dateigröße wird trotzdem nicht angezeigt. Wenn ich jetzt statt dem Echo mit filesize eine file_exists-Abfrage durchführe, fällt diese immer False aus. Das heißt er gibt mir an, dass die ZIP-Datei nicht vorhanden ist. Schaue ich per FTP in das Verzeichnis, ist die Datei vorhanden.
clearstatcache();
Irgendwie bin ich mit meinem Latein am Ende. Hat noch jemand eine Idee ? Edit: Wenn ich jetzt direkt nach dem $zip->close; folgendes einsetze :
Code:
Fehlt die Zip-Datei in der Ausgabe.
$adresse = "/var/www/domain/httpdocs/tmp/"; // Pfad angeben
$verz = openDir($adresse); while ($file = readDir($verz)) { echo $file . "<br>"; } closeDir($verz); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz