问题
Is it possible in PHP to get a count of the number of bytes transmitted to the client? For example, if I'm outputting a 10 MB file, is there a way to find out if all 10 MB were sent to the client, or to see if the client interrupted the transfer partway? I know Apache will log this afterwards, but I'd like to access the data in PHP.
回答1:
Take a look at the ignore_user_abort and connection_abort function.
回答2:
Here's what I ended up doing (thanks 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);
来源:https://stackoverflow.com/questions/1507985/php-determine-how-many-bytes-sent-over-http