doğal olarak php ile önce dosyayı okuyacak sonra kullanıcıya data aktarımı yapılacak.
php ile url kısımı gerçekden basit fakat dosya okuma ve çıktı verme konusunda php yeterli performansı vereceğini düşünmüyorum.
php ram üzerinde çalışma yapmakta yani dosya okuduğunda dosyayı ram üzerinde saklayarak okuma tamamlandıkdan sorna kullanıcıya çıktı verecek ve bunu kaldıracak makina yok gibi bişey.
günümüz video servarları bayt bayt veriyi okuyarak tarayıcı kısımında player ile bayt verileri birleştirerek hizmet vermekte bunun sebebi sunucular üzerindeki yükü azaltmak ve bekleme özelliği ile videonun tamamını indirmeden(kullanıcının yürütmeyi bitirmesi(kapatması), bağlantının kopması, video kalite geçişleri ve etc...) trafikden kart etmek.Bu sayede her part için yeni connection açılarak veri kullanıcıya sunulur.
bence bunun için farklı dil üzerinde çalışmak daha mantıklı php ile iyi bir randıman almak sıkıntılı.
şöyle bir yapı olsun,
/getvideo?key=xxx&token=yyy
kullanıcının ip adresi:zzz
key dediğimiz veri doğrudan olabildiğince işlemci gücünden kaçabilecek şekilde üretilen bir dosya adresi olmalıdır.yani bir nevi dosya adının sistemdeki karşılığı bu key her zaman bu dosyayı temsil etmeli.
token ise kullanıcının url üretilirken ip adresinin özel karakter setleri ile encode edilmiş hali olsun.
örneğin: zzz+asdf diye bir string zzz ip adresiydi asdf ise bizim özel belirlediğimiz bir karakter yani string veri zzzasdf oldu bunu md5 ile şifreledik böylece bir token elde ettik.bu tokeni dışarıdan birisi kesinlikle decode edemez bize özel bir token oldu.
video sunucuda artık sistem oturmaya başladı yapacağımız iş şu
öncelikle token kontrolu olmalı
tokeni yukarıda anlattığımız gibi kontrol etmeliyiz.
daha sonra dosya kontrolu olmalı dosyada var ise artık kullanıcıya veri akışını sağlayabiliriz.
birde zaman kontrolu var üretilen urlin birde zaman aşımı olsun;
/getvideo?key=xxx&token=yyy&time=1111
tokeni üretirken time değerinide içine kattığınız vakit bu sorunuda çözmüş oluyorsunuz.
konu php kategorisinde olduğu için bilgi amaçlı yazmak istedim.