È possibile in PHP ottenere un conteggio del numero di byte trasmessi al client? Ad esempio, se sto trasmettendo un file da 10 MB, c'è un modo per scoprire se tutti e 10 i MB sono stati inviati al client o per vedere se il client ha interrotto il trasferimento? So che Apache registrerà questo in seguito, ma mi piacerebbe accedere ai dati in PHP.PHP: determina quanti byte vengono inviati tramite http
6
A
risposta
13
Dai un'occhiata alla funzione ignore_user_abort
e connection_abort
.
11
Ecco quello che ho finito per fare (grazie 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);
si vuole fare un progressbar o qualcosa del genere? – Natrium
Volevo solo contrassegnare i file come completamente scaricati, quindi rimuoverli da un elenco. il problema era file_get_contents(), non cattura l'interruzione dell'utente. se usi fread() e fai un loop through, puoi prenderlo e quindi usare ftell() per calcolare all'incirca quanti byte sono stati inviati. (scusa per aver postato la domanda quando ho finito per capirlo da solo) – Jay