Autor Zpráva
Silver8000
Profil
Ahoj vsem

Mam takovou otazu ktera se tyka cteni velkeho mp4 souboru pro streamovani flash prehravace.
Jake je zpravne cteni techto souboru?

Mam zatim toto coz funguje ale nejsem si jist zda je to zrovna idealni.:
<?php
set_time_limit(0);
if (@$_GET['video_number']==true AND $user_logged_in==true){
$WebFileDownloadSpeed = 1*(1024*1024);

$WebFile = 'WebVideoFolder/test'.$_GET['video_number'].'.mp4';

$WebFileOpen = fopen($WebFile,'rb');
if ($WebFileOpen==true){

header("Content-length:".filesize($WebFile));
header('Content-type: '.mime_content_type($WebFile));
while (!feof($WebFileOpen)){
        $buffer = fread($WebFileOpen, $WebFileDownloadSpeed);
        echo $buffer;
        ob_flush();
        flush();
}
fclose($WebFileOpen);

}else{
die('Can not open file!');
}

}else{
die("Access denied");
}
?>

Diky vsem
Jan Tvrdík
Profil
Silver8000:
Použij normální readfile.
Silver8000
Profil
Jan Tvrdík:
no ale readfile mi jede jen z casti ... necte cely soubor.
Jan Tvrdík
Profil
Silver8000:
Nevěřím, readfile vypíše celý soubor a navíc se napočítá do časového limitu, takže není potřeba ani volat set_time_limit. Taky efektivněji pracuje s paměti.
Silver8000
Profil
no jo ale ja do pameti pokud mozno chci nacist pouze male casti a ne cely soubor kvuly omezeni pameti.

Priklad :
Celkova pamet 4GB
Povolena pamet v php 128mb
Uzivatel1 nacita 500mb soubor
Uzivatel2 nacita 700mb soubor
Uzivatel3 nacita 1200mb soubor
k tomu nepocitam beh systemu plus zatez serveru

a u readfile pri vice zadosti na soubory se nebude nacitat zpravne http://stackoverflow.com/questions/6627952/why-does-readfile-exhaust-php-memory
tim narazim i na dalsi potrebnou otazku napriklad kdyz me nebo uzivateli spadne flash prehravac tak budu muset obnovit stranku a nechci se koukat a ani cekat na to az se me nacte cely soubor ale jen kliknu v prehravaci do bodu nez flash prehravac spadl.
Jan Tvrdík
Profil
Silver8000:
a u readfile pri vice zadosti na soubory se nebude nacitat zpravne
Mám na to jiný názor.

nechci se koukat a ani cekat na to az se me nacte cely soubor
Což, ale neřešil ani tvůj původní skript.
Silver8000
Profil
Tak jak to mam teda vyresit?
Silver8000
Profil
Tak uz jsem to vyresil stahnutim apache modulu X-Sendfile a zamenou informaci v header.
Prikladny nazor :
<?php
set_time_limit(0);
if (@$_GET['video_number']==true AND $user_logged_in==true){
$WebFile = 'WebVideoFolder/test'.$_GET['video_number'].'.mp4';
if (is_readable($WebFile)==true){
header('X-Sendfile: ' . $WebFile);
header("Content-length:".filesize($WebFile));
header('Content-type: '.mime_content_type($WebFile));
exit; 
}else{
die('Can not open file!');
}
 
}else{
die("Access denied");
}
?>

Muzu rict ze to jede perfektne.
Pred tim jsem se to snazil povolit ale apache se nechtel rozjet protoze to bylo urcene pro jinou verzi , tak si davejte velky pozor vy kteri budete resit stejny nebo podobny problem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: