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
6
A
Antwort
13
Schauen Sie sich die Funktionen ignore_user_abort
und connection_abort
an.
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);
Sie eine progressbar oder so etwas machen? – Natrium
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