возобновляемая загрузка php. Браузер не хочет показывать прогресс


Прежде всего: я пытался найти решение, используя переполнение стека "похожие вопросы" и Google. Может быть, я просто не видел этого, но..

Я написал класс PHP, который принудительно загружает файлы. И дайте заголовок "принимать диапазоны: байты".

Что я делаю не так? Браузер (Google Chrome) показывает мне нулевой прогресс и скорость загрузки 0 кб/сек (я уменьшаю скорость с помощью функции сна().). Но после того, как браузер завершит загрузку - через мгновение покажет мне 100 %-ный прогресс. Почему браузер не хочет показывать свой прогресс плавно?

Программное обеспечение для загрузки файлов отлично работает с этим: показывает правильный прогресс и может работать с приостановкой\возобновлением загрузки. Журнал этого программного обеспечения:

[17:27:50.347] Thread main : task started
[17:27:50.348] Thread main : thread 1 started
[17:27:50.348] Thread main : thread started
[17:27:50.349] Thread main : connecting
[17:27:50.350] Thread main : localhost:80
[17:27:50.351] Thread main : localhost:80
[17:27:50.351] Thread main : GET /fs-debug.png HTTP/1.1
               Thread main : User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/7.0 Safari/537.77.4    
               Thread main : Host: bonell
               Thread main : Pragma: no-cache
               Thread main : Accept: */*
               Thread main : Connection: close
               Thread main : Cache-Control: no-cache
               Thread main : Referer: http://bonell/
[17:27:51.464] Thread main : HTTP/1.1 200 OK
               Thread main : Date: Mon, 14 Sep 2015 14:27:50 GMT
               Thread main : Server: Apache
               Thread main : X-Powered-By: PHP/5.3.28
               Thread main : Last-Modified: Mon, 14 Sep 2015 12:41:16 GMT
               Thread main : Cache-Control: no-cache, must-revalidate
               Thread main : Expires: Mon, 14 Sep 2015 14:27:50 GMT
               Thread main : Cache-Control: post-check=0,pre-check=0
               Thread main : Cache-Control: max-age=0
               Thread main : Pragma: no-cache
               Thread main : Connection: close
               Thread main : Content-Transfer-Encoding: Binary
               Thread main : Content-disposition: attachment; filename="tst.png"
               Thread main : Accept-Ranges: bytes
               Thread main : Content-Length: 27314
               Thread main : Content-Type: image/png
[17:27:51.465] Thread main : saved to /Users/LINKeR/Downloads/fs-debug.1.png.folx/fs-debug.1.png
[17:27:51.466] Thread main : saved to /Users/LINKeR/Downloads/fs-debug.1.png.folx/fs-debug.1.png
[17:27:54.392] Thread main : socket closed
[17:27:54.393] Thread main : thread completed
[17:27:54.393] Thread main : thread 1 completed
[17:27:54.394] Thread main : task stopped

И после этого я нажимаю "возобновить загрузку", и это работает:

[17:34:17.379] Thread main : GET /fs-debug.png HTTP/1.1
               Thread main : User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/7.0 Safari/537.77.4
               Thread main : Host: bonell
               Thread main : Pragma: no-cache
               Thread main : Accept: */*
               Thread main : Connection: close
               Thread main : Cache-Control: no-cache
               Thread main : Referer: http://bonell/
[17:34:19.420] Thread main : HTTP/1.1 200 OK
               Thread main : Date: Mon, 14 Sep 2015 14:34:17 GMT
               Thread main : Server: Apache
               Thread main : X-Powered-By: PHP/5.3.28
               Thread main : Last-Modified: Mon, 14 Sep 2015 12:41:16 GMT
               Thread main : Cache-Control: no-cache, must-revalidate
               Thread main : Expires: Mon, 14 Sep 2015 14:34:18 GMT
               Thread main : Cache-Control: post-check=0,pre-check=0
               Thread main : Cache-Control: max-age=0
               Thread main : Pragma: no-cache
               Thread main : Connection: close
               Thread main : Content-Transfer-Encoding: Binary
               Thread main : Content-disposition: attachment; filename="tst.png"
               Thread main : Accept-Ranges: bytes
               Thread main : Content-Length: 27314
               Thread main : Content-Type: image/png
[17:34:19.421] Thread main : socket closed
[17:34:19.421] Thread main : Checking Size
[17:34:19.422] Thread main : connecting
[17:34:19.423] Thread main : localhost:80
[17:34:19.423] Thread main : localhost:80
[17:34:19.424] Thread main : GET /fs-debug.png HTTP/1.1
               Thread main : User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/7.0 Safari/537.77.4
               Thread main : Host: bonell
               Thread main : Pragma: no-cache
               Thread main : Accept: */*
               Thread main : Connection: close
               Thread main : Cache-Control: no-cache
               Thread main : Range: bytes=4096-
               Thread main : Referer: http://bonell/
[17:34:19.462] Thread main : HTTP/1.1 206 Partial Content
               Thread main : Date: Mon, 14 Sep 2015 14:34:19 GMT
               Thread main : Server: Apache
               Thread main : X-Powered-By: PHP/5.3.28
               Thread main : Last-Modified: Mon, 14 Sep 2015 12:41:16 GMT
               Thread main : Cache-Control: no-cache, must-revalidate
               Thread main : Expires: Mon, 14 Sep 2015 14:34:19 GMT
               Thread main : Cache-Control: post-check=0,pre-check=0
               Thread main : Cache-Control: max-age=0
               Thread main : Pragma: no-cache
               Thread main : Connection: close
               Thread main : Content-Transfer-Encoding: Binary
               Thread main : Content-disposition: attachment; filename="tst.png"
               Thread main : Accept-Ranges: bytes
               Thread main : Content-Range: bytes 4096-27313/27314
               Thread main : Transfer-Encoding: chunked
               Thread main : Content-Type: image/png
[17:34:19.463] Thread main : saved to /Users/LINKeR/Downloads/fs-debug.1.png.folx/fs-debug.1.png
Author: LINKeRxUA, 2015-09-14

1 answers

На этот вопрос уже дан ответ в комментариях, но я сообщу об этом здесь для дальнейшего использования.

Похоже, что Chrome, даже со всеми правильными заголовками (Content-Length и Accept-Ranges: bytes), отключает отчеты о ходе выполнения и возобновление загрузки для файлов небольшого размера.

Попробуйте использовать файл большего размера, и это должно сработать.

 1
Author: aghidini, 2015-09-14 15:29:06