Ik maak een streaming applicatie die gebruik maakt van een webserver om zijn data op te slaan.
* Persoon A upload aan een variabele snelheid (kan 2-5kB/s zijn) zijn data.
* 5 minuten later begint persoon B van de (web)server de data te halen met zijn speciaal programma dat ik hiervoor heb gemaakt.
Probleem: aangezien dat die upload afhankelijk is van de data die persoon A genereert en dat redelijk kan verschillen (of er al dan niet iets gebeurt) kan er dit optreden:
1) persoon A upload tegen 5kB/s en persoon B download tegen 2kB/s -> programma zal op een gegeven moment te weinig data hebben om te verwerken -> big problem
2) persoon A upload tegen 2KB/s en persoon B download tegen 5kB/s -> php script komt aan einde van file op server en programma B stopt ermee -> na een tijdje komt programma aan einde data aangezien die niet meer van server gehaald wordt.
(het is voor FREEWARE natuurlijk
, namelijk voor mohTV, iets zoals HLTV, om de het spel van anderen te volgen voor het spel medal of honor....
Nu kan ik :
a) voor optie 2 gaan met dat probleem, maar als het script ophoudt, direct een nieuwe connectie maken met webserver & een offset voor de file meegeven. --> maar is veel te veel overhead, teveel connecties opzetten enz -> niet goed
b) voor optie 2, maar mijn PHP script zo wijzigen dat het niet ophoudt als het bestand op de server ten einde is dat 'fread' leest.
dit is de code en hieronder de pseude code
(ik kan PHP, maar ben geen expert)
pseudo code:
zodat het script niet ophoudt, ook al wordt het einde van de file gelezen. Want 5 seconden erna wordt de file upgedate en is er weer nieuwe data
snap je?
audio/x-mpeg -> dat staat er omdat het werkt
zou kunnen dat server alleen audio wil streamen ofzo
* Persoon A upload aan een variabele snelheid (kan 2-5kB/s zijn) zijn data.
* 5 minuten later begint persoon B van de (web)server de data te halen met zijn speciaal programma dat ik hiervoor heb gemaakt.
Probleem: aangezien dat die upload afhankelijk is van de data die persoon A genereert en dat redelijk kan verschillen (of er al dan niet iets gebeurt) kan er dit optreden:
1) persoon A upload tegen 5kB/s en persoon B download tegen 2kB/s -> programma zal op een gegeven moment te weinig data hebben om te verwerken -> big problem
2) persoon A upload tegen 2KB/s en persoon B download tegen 5kB/s -> php script komt aan einde van file op server en programma B stopt ermee -> na een tijdje komt programma aan einde data aangezien die niet meer van server gehaald wordt.
(het is voor FREEWARE natuurlijk
Nu kan ik :
a) voor optie 2 gaan met dat probleem, maar als het script ophoudt, direct een nieuwe connectie maken met webserver & een offset voor de file meegeven. --> maar is veel te veel overhead, teveel connecties opzetten enz -> niet goed
b) voor optie 2, maar mijn PHP script zo wijzigen dat het niet ophoudt als het bestand op de server ten einde is dat 'fread' leest.
dit is de code en hieronder de pseude code
(ik kan PHP, maar ben geen expert)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| if(file_exists($file) && is_file($file)) { header("Cache-control: private"); header("Content-Type: audio/x-mpeg");//application/octet-stream header("Content-Length: ".filesize($file)); header("Content-Disposition: filename=$file" . "%20"); flush(); $fd = fopen($file, "r"); while(!feof($fd)) { echo fread($fd, round($speed*1024)); flush(); sleep(1); } fclose ($fd); |
pseudo code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| if(file_exists($file) && is_file($file)) { header("Cache-control: private"); header("Content-Type: audio/x-mpeg");//application/octet-stream header("Content-Length: ".filesize($file)); header("Content-Disposition: filename=$file" . "%20"); flush(); $fd = fopen($file, "r"); while(true) { if( currentFilePointer <= (FileSize-$speed*1024) ) { echo fread($fd, round($speed*1024)); flush(); } sleep(1); } fclose ($fd); |
zodat het script niet ophoudt, ook al wordt het einde van de file gelezen. Want 5 seconden erna wordt de file upgedate en is er weer nieuwe data
snap je?
audio/x-mpeg -> dat staat er omdat het werkt
[ Voor 7% gewijzigd door Verwijderd op 07-11-2004 22:09 ]