php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.06.2010, 17:48  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Partial Content und content-encoding: gzip

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

Geändert von McSodbrenner (17.06.2010 um 17:43 Uhr).
McSodbrenner ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.06.2010, 00:49  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Wie sieht denn die Anfrage aus, die dein Firefox an den Server sendet?
Ist die mit dem per cURL gemachten Request identisch (in den wesentlichen Punkten)?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 17.06.2010, 15:01  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard

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
McSodbrenner ist offline   Mit Zitat antworten
Alt 17.06.2010, 17:54  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard

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
McSodbrenner ist offline   Mit Zitat antworten
Alt 17.06.2010, 19:19  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Gibts kein RFC dazu?
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online   Mit Zitat antworten
Alt 18.06.2010, 08:51  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard

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...
McSodbrenner ist offline   Mit Zitat antworten
Alt 18.06.2010, 10:50  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard

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
McSodbrenner ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ä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 -&gt; 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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
content-encoding-fehler gzip, content-encoding: gzip, content-encoding gzip, antwort header kein content-encoding, php content encoding, partial content, content encoding fehler firefox, firefox content-type gzip, content type gzip download, content-encoding-fehler bei php datei?, 206 partial content gzip, content-encoding-fehler firefox gzip, attachment gzip php, content-encoding-fehler lösung gzip, php gzip content, gzip 206 particial content, bei jedem browser content-encoding-fehler, content-disposition gzip, php content-length gzip, curl_exec content_type zip

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum