4

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

铬检查员

如您所见,第一个被取消,第二个仍然待定,第三个有效。同样,该文件在浏览器中播放。我尝试了其他读取文件的方法(readfile、fgets、fread 等),结果相同。是什么导致了这三个请求,我怎样才能获得一个工作请求?

4

2 回答 2

2

第一个请求是针对第一个字节范围的,预加载文件。一旦下载了指定的数量,浏览器就会取消请求。

第二个我不确定...

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

于 2012-10-05T16:50:18.920 回答
1

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

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

另请参阅:缓存由 PHP 动态创建的 HTTP 响应

它更详细地描述了我建议做的事情。

于 2012-10-05T16:41:10.920 回答