PHP readfile / fgets / fread会导致多个服务器请求

时间:2012-10-04 17:18:18

标签: php apache readfile fread fgets

我正在尝试使用PHP代理通过Apache / Nginx传输MP4文件以进行身份​​验证。我已经实现了为iOS流式传输的字节范围,如下所述:http://mobiforge.com/developing/story/content-delivery-mobile-devices。这在Chrome和Safari中完全正常但是......真的很奇怪的是,如果我监视服务器对php页面的请求,其中三个在浏览器中每页加载。以下是Chrome检查员的屏幕截图(直接进入PHP代理页面):

Chrome inspector

如您所见,第一个被取消,第二个被保留,第三个有效。同样,该文件在浏览器中播放。我尝试过使用相同结果读取文件(readfile,fgets,fread等)的替代方法。导致这三个请求的原因是什么?如何获得单个工作请求?

2 个答案:

答案 0 :(得分:2)

第一个请求是第一个字节范围,预加载文件。浏览器在下载指定数量后取消该请求。

第二个我不确定...

第三个是当你真正开始播放媒体文件时,它会请求并下载完整的内容。

答案 1 :(得分:1)

不确定这是否能回答您的问题,但使用PHP提供大型二进制文件不是正确的做法。

最好让PHP只处理身份验证,并将文件引用传递给Web服务器进行服务,从而释放资源。

另请参阅:Caching HTTP responses when they are dynamically created by PHP

它更详细地描述了我建议做什么。