geschützter PHP Download auf Windows Server
bearbeitet von Regina Schaukrug> > Im Übrigen kannst Du das chunked ja abstellen dadurch dass du dem Webserver in einem Responseheader Content-Length mitteilst wieviele bytes da kommen.
> Ist Dir gar nich in den Sinn gekommen, dass es hier genau um das Gegenteil ging?
Das Gegenteil:
Du kannst das chunked erzwingen, in dem Du dem Server NICHT mitteilst, wie viele Bytes da kommen.
Also statt:
~~~php
<?php
header( 'Content-Type: application/unknown' );
header( 'Content-Disposition: attachment; filename=' . $file );
header( 'Content-Length: ' . filesize( $file) );
readfile( $file );
?>
~~~
Ergebnis (Nur header):
~~~
---response begin---
HTTP/1.1 200 OK
Date: Sat, 02 Sep 2017 13:59:01 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Disposition: attachment; filename=big_random
Content-Length: 1048576
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/unknown
---response end---
~~~
eben
~~~php
<?php
header( 'Content-Type: application/unknown' );
header( 'Content-Disposition: attachment; filename=' . $file );
# header( 'Content-Length: ' . filesize( $file) );
readfile( $file );
?>
~~~
Ergebnis (Nur header):
~~~
---response begin---
HTTP/1.1 200 OK
Date: Sat, 02 Sep 2017 13:57:30 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Disposition: attachment; filename=big_random
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/unknown
---response end---
~~~
Eines noch: Die Datenübertragungsrate bricht bei mir (wget -d --delete-after http://localhost/...) bei einer großen Datei (1GB) von 592 MB/s auf 482MB/s ein, wenn ich chunked verwende. Das will man also tatsächlich nicht immer. Bei den angesprochenen zip-Files ist davon abzuraten, also zuzuraten, die Filesize zu lesen und zu senden.
geschützter PHP Download auf Windows Server
bearbeitet von Regina Schaukrug> > Im Übrigen kannst Du das chunked ja abstellen dadurch dass du dem Webserver in einem Responseheader Content-Length mitteilst wieviele bytes da kommen.
> Ist Dir gar nich in den Sinn gekommen, dass es hier genau um das Gegenteil ging?
Das Gegenteil:
Du kannst das chunked erzwingen, in dem Du dem Server NICHT mitteilst, wie viele Bytes da kommen.
Also statt:
~~~php
<?php
header( 'Content-Type: application/unknown' );
header( 'Content-Disposition: attachment; filename=' . $file );
header( 'Content-Length: ' . filesize( $file) );
readfile( $file );
?>
~~~
Ergebnis (Nur header):
~~~
---response begin---
HTTP/1.1 200 OK
Date: Sat, 02 Sep 2017 13:59:01 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Disposition: attachment; filename=big_random
Content-Length: 1048576
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/unknown
---response end---
~~~
eben
~~~php
<?php
header( 'Content-Type: application/unknown' );
header( 'Content-Disposition: attachment; filename=' . $file );
# header( 'Content-Length: ' . filesize( $file) );
readfile( $file );
?>
~~~
Ergebnis (Nur header):
~~~
---response begin---
HTTP/1.1 200 OK
Date: Sat, 02 Sep 2017 13:57:30 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Disposition: attachment; filename=big_random
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/unknown
---response end---
~~~
Eines noch: Die Datenübertragungsrate bricht bei mir (wget -d --delete-after http://localhost/...) bei einer großen Datei (1GB) von 592 MB/s auf 482MB/s ein, wenn ich chunked verwende. Das will man also tatsächlich nicht immer. bei den angesprochenen zip-Files ist davon abzuraten, also zuzuraten, die Filesize zu lesen und zu senden.
geschützter PHP Download auf Windows Server
bearbeitet von Regina Schaukrug> > Im Übrigen kannst Du das chunked ja abstellen dadurch dass du dem Webserver in einem Responseheader Content-Length mitteilst wieviele bytes da kommen.
> Ist Dir gar nich in den Sinn gekommen, dass es hier genau um das Gegenteil ging?
Das Gegenteil:
Du kannst das chunked erzwingen, in dem Du dem Server NICHT mitteilst, wie viele Bytes da kommen.
Also statt:
~~~php
<?php
header( 'Content-Type: application/unknown' );
header( 'Content-Disposition: attachment; filename=' . $file );
header( 'Content-Length: ' . filesize( $file) );
readfile( $file );
?>
~~~
Ergebnis (Nur header):
~~~
---response begin---
HTTP/1.1 200 OK
Date: Sat, 02 Sep 2017 13:59:01 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Disposition: attachment; filename=big_random
Content-Length: 1048576
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/unknown
---response end---
~~~
eben
~~~php
<?php
header( 'Content-Type: application/unknown' );
header( 'Content-Disposition: attachment; filename=' . $file );
# header( 'Content-Length: ' . filesize( $file) );
readfile( $file );
?>
~~~
Ergebnis (Nur header):
~~~
---response begin---
HTTP/1.1 200 OK
Date: Sat, 02 Sep 2017 13:57:30 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Disposition: attachment; filename=big_random
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/unknown
---response end---
~~~