Voor een groot radioproject waar verschillende radiostations gebruik van moeten kunnen maken ben ik bezig met een frontend luisteraars-applicatie. Deze applicatie gebruikt een https-verbinding en derhalve moeten alle bronnen binnen de pagina ook via https lopen.
Nu vormt dit een probleem voor de streams van veel radiostations, die outputten alleen via http. Zeker kleinere stations die Shoutcast gebruiken krijgen we niet aan de SSL. Ik heb daarom het idee opgevat om de streams via onze eigen server te laten lopen, zo kan ik vanuit de webapplicatie een request uitvoeren naar /stream.php?radiostation=[id], en vervolgens een soort passthrough uitvoeren. Dit is op zich wel te realiseren met de bekende mogelijkheden in PHP, maar met een flink aantal streams zorgt dat voor veel geheugengebruik, omdat alle data ingelezen moet worden, door de output buffer gaat en daarna naar Apache geflusht wordt.
Vervolgens kwam ik uit bij X-SendFile, hetgeen precies doet wat ik wil, namelijk het versturen van het bestand buiten PHP, buffers en het geheugen om. Deze Apache mod is echter alleen geschik voor lokale bestanden.
Hebben jullie misschien ideeën voor een andere aanpak, of probeer ik iets onmogelijks?
Nu vormt dit een probleem voor de streams van veel radiostations, die outputten alleen via http. Zeker kleinere stations die Shoutcast gebruiken krijgen we niet aan de SSL. Ik heb daarom het idee opgevat om de streams via onze eigen server te laten lopen, zo kan ik vanuit de webapplicatie een request uitvoeren naar /stream.php?radiostation=[id], en vervolgens een soort passthrough uitvoeren. Dit is op zich wel te realiseren met de bekende mogelijkheden in PHP, maar met een flink aantal streams zorgt dat voor veel geheugengebruik, omdat alle data ingelezen moet worden, door de output buffer gaat en daarna naar Apache geflusht wordt.
Vervolgens kwam ik uit bij X-SendFile, hetgeen precies doet wat ik wil, namelijk het versturen van het bestand buiten PHP, buffers en het geheugen om. Deze Apache mod is echter alleen geschik voor lokale bestanden.
Hebben jullie misschien ideeën voor een andere aanpak, of probeer ik iets onmogelijks?