将数据直接从远程服务器流式传输到客户端的脚本


Script to stream data directly from remote server to client

我希望在远程服务器和客户端之间建立直接连接,其中数据传输由PHP脚本控制。该脚本将负责确定要从远程服务器传输到客户端的数据块;我不希望数据通过托管PHP脚本的服务器传输。

本质上讲,我正在尝试将数据从远程服务器流式传输到客户端,其中传输的数据块由 PHP 脚本控制。

我看了一下PHP的流函数(http://php.net/manual/en/book.stream.php),但这似乎没有提供解决方案。

PHP 是否提供从远程文件中选择特定字节范围并将其直接传输到客户端的功能?

你的问题没有完全指定,但我假设你有一个典型的PHP部署,即你期望客户端向你的服务器发出http请求,你有一个服务器根据所述请求解释php代码,并且有一些"远程服务器"你想要发出http请求,并让客户端接收该响应。当你说"直接从远程服务器流式传输数据"时,听起来你希望客户端与远程服务器建立直接连接并使用PHP控制该连接,严格来说这是不可能的,但是有一些方法可以松散地解释你所说的是可能的。

如果您愿意放宽"由 PHP 脚本控制的要求"

您可以通过从 php 脚本发送将在客户端上运行的 javascript 来使客户端创建与远程服务器的直接连接,客户端将创建直接连接。在这种情况下,如果远程服务器支持它,则可以使用 http 内容范围来请求特定的字节范围。例如 xhr.setRequestHeader('content-range', 'bytes 0-1233/1234');看:

  • 使用 HTTP 读取文件的第一部分
  • 使用 JavaScript 添加自定义 HTTP 标头

在此方案中,您不会使用 php 控制内容范围。 您正在使用 PHP 发送请求内容范围的 JavaScript。