【问题标题】:Script to stream data directly from remote server to client将数据直接从远程服务器流式传输到客户端的脚本
【发布时间】:2016-03-01 02:16:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如前所述,这是无法做到的。
  • 您甚至不能下载这些字节然后将它们从您的主机发送到您的客户端?
  • @Michael 我不想被托管 PHP 脚本的服务器的带宽速率限制。
  • 这叫做爬取
  • 我以为它是想把你的蛋糕吃掉。如果你想成为代理,你必须处理数据

标签: php stream remote-server


【解决方案1】:

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

如果你愿意放宽“由 PHP 脚本控制的要求”

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

在这种情况下,您无法使用 php 控制内容范围。您正在使用 PHP 发送请求内容范围的 javascript。

【讨论】:

  • 我猜 Hope4you 想要发送一个完整的文件而不仅仅是一个块。通过发送多个 xhr 标头如何进行组装?我猜 JavaScript 会负责在浏览器中编排它,然后在让用户拥有它之前将其组装到一个文件中?
  • 我举了一个请求块的例子,因为他问“PHP是否提供了一个函数来从远程文件中选择特定范围的字节,并将其直接传输到客户端?”使用 content-range 是我知道让客户端请求特定字节范围的唯一方法。
  • 是的,我明白了,我只是在想如何组装。很好的答案,我不知道内容范围。它是否被服务器广泛启用,你知道吗? (阿帕奇,Nginx)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多