php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.02.2010, 20:30  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard DivX Pseudo Streaming

Nun mein zweiter Thread heute

Ich versuche eine DivX-Datei per PHP auszuliefern. Allerdings mag dies der DivX Webplayer garnicht und quitiert das mit folgender Fehlermeldung:
Zitat:
Die Datei, die Sie wiederzugeben versuchen, wurde nicht komplett heruntergeladen und eine Wiedergabe ist nicht möglich.
Der Code ist folgender:
PHP-Code:
            $source Draco_Datasource_Factory::factory($datasource->class$datasource->root);
            
header('Content-Type: application/octet-stream');
            
header('Content-Transfer-Encoding: binary');
            
header('Content-Length: '.$source->getSize($path));
            
set_time_limit(0); 
Zend_Controller_Front::getInstance()->setParam('disableOutputBuffering'true);
            
$this->_helper->layout->disableLayout();
            
ob_end_clean();
            
$source->printFile($path); 
PHP-Code:
public function printFile($file) {
        
$dsn $this->_dsn;
        if(
substr($dsn, -11) != '/')
            
$dsn .= '/';
        
$stream fopen($dsn.$file'r');
        while(!
feof($stream)) {
            echo 
fgets($stream1024);
            
flush();
        }
    } 
Wenn ich die Datei direkt im Browser aufrufe kann ich die Datei downloaden und auch ohne Probleme abspielen. Ich hab absolut keine Ahnung woran es noch liegen könnte

Ich hoffe einer von euch kennt sich damit aus, bei google hab ich mich dumm und duselig gesucht aber nicht gefunden.

lg
draco
draco88 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 11.02.2010, 20:48  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

nimm dir wget oder einen firefox-plugin deiner wahl und mach dumps davon welche header apache sendet und welche dein php-script.

bei wget bekommst du sämtliche header mit wget -dv angezeigt.

Nutzt du eigentlich irgendwo exit ? Weil ansonsten müsste ja der ViewRenderer noch deaktiviert werden oder hast du den Standardmäßig aus ?, sonst kann es sein dass der dir auch ne exception wegen headers send oder so nachträg noch mit reinhaut.

dann vergleiche mal die dateien die du erhälst (am besten mittels nem hash)

und dann stellst du deinen apache mal auf das forensic-logs um (anstatt common oder combined) [oder alternativ nimmst du nen package-sniffer wie wireshark oder wenn firefox-plugins auch reqeusts von plugins wie dem divx-player kennen, ein solches) ähnliches und schau dir die logs deines webservers an und schau was der divx-player macht.

Ich kenn das divx-format leider nicht vom aufbau her, aber ich könnte mir vorstellen dass der z.b. erstmal nen HEAD-request macht für die größe und jenachdem wo die video-header bei divx stehen dann z.b. an ne gewisse Stelle springen will, ans ende oder wohin auch immer, dann schaust du was da für header kommen (forensic-format loggt header mit).
Sprich der player requested z.b. nur von byte X bis byte Y oder sowas, so wie Download-manager downloads parrallel machen. Apache kann das natürlich out-of-the-box, mit php musst du das selbst basteln (oder es irgendwie von apache machen lassen, z.b. wenn du eigenen server nutzt kannst du dir mal mod_xsendfile anschauen [wichtig, dieses modul ist NICHT geeignet wenn du auf dem apache webhosting oder ähnliches betreibt, weil sich damit php-limitierungen (openbase-dir, etc) umgehen lassen].
-> Sending files better: Apache mod_xsendfile and PHP | CodeUtopia - The blog of Jani Hartikainen

Denke du wirst dann in dein Script support für http-Sachen wie
Content-Ranges und ähnliches implementieren müssen: HTTP/1.1: Header Field Definitions
Im Manual findest du dazu an verschiedenen Stellen eventuell etwas Hilfe:
PHP: fread - Manual
robo47 ist offline   Mit Zitat antworten
Alt 12.02.2010, 09:17  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

Vielen Dank erstmal für deine Hilfe

Die Lösung war aber eine andere gan simple.
Ich hab dem Webplayer die URL halb-relative übergeben(/draco/public/stream/index/movie/1) er will sie aber nur Absolute haben, musste als nur nen http://localhost davorsetzten. Bin da erstmal nicht drauf gekommen, weil auf der DivX Dev-Page steht, dass er relative und absolute Pfade unterstützt.

Zitat:
Nutzt du eigentlich irgendwo exit ? Weil ansonsten müsste ja der ViewRenderer noch deaktiviert werden oder hast du den Standardmäßig aus ?, sonst kann es sein dass der dir auch ne exception wegen headers send oder so nachträg noch mit reinhaut.
Ich dachte mit
PHP-Code:
$this->_helper->layout->disableLayout(); 
wird das deaktiviert?!
Fehler kommen auf jeden Falle keine mehr
draco88 ist offline   Mit Zitat antworten
Alt 12.02.2010, 13:39  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Das Layout hat eigentlich erstmal nichts mit dem ViewRenderer-Plugin zu tun der automatisch views passend zu controller/action rendered nach dem ausführen einer Action.
Das Layout setzt das was der ViewRenderer rendered ja dann ins logout ein.

Weis nicht ob da irgendwo vielleicht noch was automatisch den Viewrenderer deaktiviert wenn das Layout deaktiviert wurde (hab da aber auf anhieb nichts gefunden weil disableLayout auch nichts anderes macht als ne Variable zu setzen die Zend_Layout abfragt wenn es an der Reihe ist.
robo47 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
[Erledigt] Radio / TV streaming mit PHP möglich??? djscaleo PHP-Fortgeschrittene 12 11.07.2009 14:17
Scriptsuche [Erledigt] DivX Filehosting Script Sebo Scriptbörse 2 29.06.2009 01:00
Per .htaccess avi Videos für DIVX Player nur auf 2 Seiten zulassen gamerphil Server, Hosting und Workstations 1 10.04.2009 12:58
Pseudo Code | Höhere Programmierung | Wissenslücke moveax1 Software-Design 5 12.01.2009 22:37
Streaming eines Films vollkommenegal Server, Hosting und Workstations 3 21.03.2008 14:58
windows pseudo shell für den browser notyyy Off-Topic Diskussionen 4 13.07.2007 15:39
streaming frage... Promaetheus PHP Tipps 2007 1 17.12.2006 14:57
streaming von videos, server lahmt bereits nach einem abruf snowflow Server, Hosting und Workstations 6 30.11.2006 18:04
proc_open mit Nutzung von pseudo terminal support Server, Hosting und Workstations 9 02.01.2006 19:58
[Erledigt] Externes Downloaden verhindern, aber streaming erlauben... Server, Hosting und Workstations 1 27.11.2005 11:39
Audio Streaming Server mit PHP???? Beitragsarchiv 2 04.01.2005 10:36
[Erledigt] Video Streaming Off-Topic Diskussionen 2 24.11.2004 22:03
[Erledigt] MP3 streaming mit Mozialla PHP-Fortgeschrittene 1 17.11.2004 19:54
Streaming script Beitragsarchiv 0 07.09.2004 12:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
die datei, die sie wiederzugeben versuchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich, die datei die sie wiederzugeben versuchen wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich, die datei, die sie wiederzugeben versuchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich., die datei die sie wiederzugeben versuchen wurde nicht komplett heruntergeladen, \die datei die sie wiederzugeben versuchen wurde nicht komplett heruntergeladen\, \die datei, die sie wiederzugeben versuchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich\, die datei die sie wiederzugeben versuchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich, \die datei, die sie wiederzugeben versuchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich.\, die datei, die sie wiederzugeben versuchen wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich, \die datei, die sie wiederzugeben versuchen\, die datei, die sie wiedergeben versuchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich, die datei die sie wiederzugeben versuchen wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich., die datei, die sie wiederzugeben veruchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich, \die datei die sie wiederzugeben versuchen wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich\, die datei, die sie wiederzugeben versuchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich.\, die datei die sie wiedergeben versuchen wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich, divx \wurde nicht komplett heruntergeladen\, \die datei, die sie wiederzugeben versuchen, wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich., divx wurde nicht komplett heruntergeladen, die datei die sie versuchen wiederzugeben wurde nicht komplett heruntergeladen und eine wiedergabe ist nicht möglich

Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 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