2009-10-02 8 views
6

Ist es in PHP möglich, die Anzahl der an den Client übertragenen Bytes zu zählen? Wenn ich zum Beispiel eine 10-MB-Datei ausspreche, gibt es eine Möglichkeit herauszufinden, ob alle 10 MB an den Client gesendet wurden, oder um zu sehen, ob der Client die Übertragung unterbrochen hat? Ich weiß, Apache wird dies später protokollieren, aber ich möchte auf die Daten in PHP zugreifen.PHP - bestimmen, wie viele Bytes über http gesendet

+0

Sie eine progressbar oder so etwas machen? – Natrium

+0

Ich wollte nur Dateien als vollständig heruntergeladen markieren, dann entfernen Sie sie aus einer Liste. das Problem war file_get_contents(), es fängt die Benutzerunterbrechung nicht auf. Wenn Sie fread() und loop through verwenden, können Sie es abfangen und dann mit ftell() herausfinden, wie viele Bytes ungefähr gesendet wurden. (Entschuldigung für das Posten der Frage, als ich es selbst herausgefunden habe) – Jay

Antwort

11

Hier ist, was ich am Ende tun (dank Gumbo):

ignore_user_abort(true); 

$handle = fopen($file_path, 'r'); 
while (! feof($handle)) { 
    echo fread($handle, 4096); 
    if (connection_aborted()) { 
     $transfer_success = false; 
     $bytes_transferred = ftell($handle); 
     break; 
    } 
} 
fclose($handle); 
+0

Ist das immer noch die Art, wie du das machst? – Brad

+0

Yup. Gut genug trainieren. Warum? – Jay

+0

Ich möchte API Anfrage Downloads von Datenübertragungsmenge zu begrenzen. Danke für den Code. – Brad

Verwandte Themen