PHP - определить, сколько байтов отправлено по http - PullRequest
6 голосов
/ 02 октября 2009

Возможно ли в PHP получить количество байтов, переданных клиенту? Например, если я вывожу файл размером 10 МБ, есть ли способ узнать, все ли 10 МБ были отправлены клиенту, или посмотреть, не прервал ли клиент передачу на полпути? Я знаю, что Apache зарегистрирует это позже, но я хотел бы получить доступ к данным в PHP.

Ответы [ 2 ]

13 голосов
/ 02 октября 2009

Посмотрите на функции ignore_user_abort и connection_abort.

11 голосов
/ 02 октября 2009

Вот что я в итоге сделал (спасибо Гамбо):

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);
...