| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| Erfahrener Benutzer Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse: Fortgeschritten ![]() | Hi, ich habe Probleme, per PHP-Script eine HTTP-Partial-Content-Antwort richtig zu senden. Wenn ich folgende Anfragen per curl auf der shell mache, scheint alles richtig zu sein: Code: christoph@guido:~$ curl --dump-header - http://192.168.3.165/test/download/
HTTP/1.1 200 OK
Date: Wed, 16 Jun 2010 15:50:02 GMT
Server: Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.6 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
X-Powered-By: PHP/5.2.6-2ubuntu4.6
Set-Cookie: PHPSESSID=fe803a108abd291ac72cc7d0be3bb709; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: protected
Set-Cookie: PHPSESSID=31225b03420b6534669bf38b9b09fb44; path=/
Content-Disposition: attachment; filename=test.php
Accept-Ranges: bytes
Content-Length: 270
ETag: 16af3235fac954f8d63ed446e478ee1e
Content-Type: application/x-php; charset=utf-8
<?php
class PageController extends GlobalController
{
public function run()
{
$file = __FILE__;
$handle = fopen($file, 'r');
$this->view->setHandler('plain');
$this->view->setContent($handle);
$this->view->setProperty('downloadable', 'test.php');
}
}
Code: christoph@guido:~$ curl -H Range:bytes=7-51 --dump-header - http://192.168.3.165/test/download/ HTTP/1.1 206 Partial Content Date: Wed, 16 Jun 2010 15:50:07 GMT Server: Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.6 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g X-Powered-By: PHP/5.2.6-2ubuntu4.6 Set-Cookie: PHPSESSID=1fe4894313fca5971adbad693f826049; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-cache, must-revalidate Pragma: protected Set-Cookie: PHPSESSID=29ea71fb8dfd4a26b66c28d84bde5a60; path=/ Content-Disposition: attachment; filename=test.php Accept-Ranges: bytes Content-Length: 45 ETag: 16af3235fac954f8d63ed446e478ee1e Content-Range: bytes 7-51/270 Content-Type: application/x-php; charset=utf-8 class PageController extends GlobalController Versuche ich jedoch den Firefox und seine Resume-Funktion beim Download zu verwenden, kann ich zwar den Download pausieren, jedoch gibts beim Resume eine Fehlermeldung, dass der Firefox die Datei nicht lesen kann. Ist irgendetwas an den Headern, die ich zurücksende, falsch oder fehlt etwas? Danke und Grüße, Christoph
__________________ http://mcsodbrenner.blogspot.com/ Serpent PHP Template Engine: http://code.google.com/p/serpent-php-template-engine/ Geändert von McSodbrenner (17.06.2010 um 17:43 Uhr). |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse: Fortgeschritten ![]() | Hab den Fehler gefunden. War etwas hinterhältig. In cURL konnte ich das allerdings nicht sehen, weil die Header völlig ok waren. *doh*Hatte die Daten gezippt ausgeliefert. Das Zippen fand statt, bevor die angeforderte Range aus den Daten ausgeschnitten wurde. Ich hab also ein Teil der gezippten Daten ausgeliefert. Anscheinend geht das so aber nicht. Mann muss erst die Daten aus der Ursprungsdatei ausschneiden und dann erst zippen. Also jeden Request einzeln zippen. Dummerweise steht nirgends, wie die Browser das handlen Danke und Gruß, Christoph
__________________ http://mcsodbrenner.blogspot.com/ Serpent PHP Template Engine: http://code.google.com/p/serpent-php-template-engine/ |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse: Fortgeschritten ![]() | OK, die letzte Lösung funktioniert doch nicht. Ich würde jetzt so gern wissen, wie die richtige Lösung rein theoretisch aussehen müsste, um Partial Content in Verbindung mit Content-Encoding zu senden (ohne Content-Encoding gehts jetzt einwandfrei). Hab jetzt drei Lösungsansätze, die irgendwie alle falsch zu sein scheinen: 1. Die erste Antwort ganz normal mit Content-Encoding: gzip senden. Beim Partial-Content das Content-Encoding weglassen, weil man ja nur einen Teil des alten GZIP-Contents sendet. Ergebnis: Funktioniert nicht. Die resultierende Datei ist nur so groß wie die gezippte Originaldatei. Der erste Teil des Inhalts ist dabei heil und der zweite noch kodiert. 2. Die erste Antwort ganz normal mit Content-Encoding: gzip senden. Beim Partial-Content auch Content-Encoding senden. Ergebnis: Firefox verabschiedet sich mit einem Download-Fehler. 3. Jedes Ergebnis einzeln gzip kodieren. Da der Browser aber anscheinend nach der Byte-Range des gezippten Inhalts fragt, kann das natürlich nicht sein. Hilfe, ![]() Christoph
__________________ http://mcsodbrenner.blogspot.com/ Serpent PHP Template Engine: http://code.google.com/p/serpent-php-template-engine/ |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse: Fortgeschritten ![]() | Doch klar, die RFC 2616. Allerdings werden dort Content-Encoding und Content-Range nicht im Zusammenhang beschrieben, sondern unabhängig voneinander. Leider. Finde auch keine Code-Beispiele, die beides gleichzeitig implementieren. Geht das vielleicht gar nicht? Aber auch das müsste ja irgendwo stehen...
__________________ http://mcsodbrenner.blogspot.com/ Serpent PHP Template Engine: http://code.google.com/p/serpent-php-template-engine/ |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse: Fortgeschritten ![]() | So ich geb auf: Hab zwischenzeitlich das hier gefunden, was aussagt, dass die RFC in diesem Bereich ziemlich schlusig ist: Re: Content-Encoding, Content-Range Außerdem scheint der Firefox die Kombination nicht zu unterstützen, im Chrome gings auf Anhieb. Da sich der Apache selbst um die Content-Ranges von statischen Files kümmert und das der Löwenanteil bei Riesendownloads ist, hab ich das Feature jetzt einfach mal geknickt. Zu wenig Nutzen. Danke euch für die Anteilnahme ![]() Christoph
__________________ http://mcsodbrenner.blogspot.com/ Serpent PHP Template Engine: http://code.google.com/p/serpent-php-template-engine/ |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Blätterfunktion / Menubar Content änderung | Maxwill | PHP Tipps 2010 | 2 | 27.04.2010 12:48 |
| Doppelten Content | AllOnline | PHP Tipps 2009 | 6 | 07.01.2010 20:01 |
| Bekomme von Server keinen Content | MrDevil | PHP Tipps 2009 | 7 | 26.11.2009 14:17 |
| Zwei Domains auf Root Verzeichnis - Unterschiedlicher Content? | KarlRasiert | Server, Hosting und Workstations | 5 | 01.09.2009 02:05 |
| [Erledigt] frage wegen content | Dante-Uchiha | HTML, Usability und Barrierefreiheit | 5 | 03.04.2009 20:05 |
| Content "slider" | shifty | JavaScript, Ajax und mehr | 15 | 06.01.2009 20:34 |
| Content kürzen | Moritzilie | HTML, Usability und Barrierefreiheit | 4 | 21.10.2008 19:32 |
| Cross Content Media sucht motivierten PHP-Entwickler in München | crosscontent | Beitragsarchiv | 0 | 23.08.2008 17:41 |
| Partial Content | smoere | PHP Tipps 2006 | 1 | 20.06.2006 13:24 |
| [Erledigt] 2 menüs -> content eindeutig zuweisen | Datenbanken | 0 | 14.06.2005 15:31 | |
| Suche | Content Management System | Beitragsarchiv | 10 | 18.05.2005 09:59 | |
| [Erledigt] Sicherstellen von unkomprimiertem Content | PHP-Fortgeschrittene | 9 | 08.12.2004 12:47 | |
| Content bereich aus Mysql mit php code einbinden | Datenbanken | 0 | 28.11.2004 16:06 | |
| Externen Content laden | PHP Tipps 2004 | 4 | 13.08.2004 10:52 | |