代码之家  ›  专栏  ›  技术社区  ›  user1997620

PHP中的对等文件共享[关闭]

  •  0
  • user1997620  · 技术社区  · 11 年前

    这个问题对我来说真的很重要,因为我正在用PHP开发聊天系统,我想允许用户通过某种对等系统在他们之间共享文件。

    现在我知道点对点有独立的协议,HTTP不是其中之一,但我仍然认为这是可能的。

    就像用户A和用户B都已连接,并且A希望向B发送1GB的文件一样,有两种解决方案:

    • 懒惰的一个:A将他的文件完全上传到服务器,然后B下载,这使服务器更像是一个“存储”服务器,而不是聊天服务器。

    • 我认为这是好的:用户A向B发送文件,而在传输之前没有将其实际存储在服务器上。

    这在PHP中有可能吗?

    提前谢谢。

    1 回复  |  直到 11 年前
        1
  •  6
  •   Rich Bradshaw    11 年前

    让我们想想你的问题。

    解决方案1如下所示:

    User A <----->  Server -------> User B
                    (PHP)
    

    也就是说,服务器给用户A一个上传表单,然后用户A向服务器发送一个文件。用户B从服务器获取文件。

    解决方案2如下所示:

    Server ----->  User A
    Server ----->  User B
    User A ----->  User B
    

    这一次,服务器给用户A和B一些代码,然后允许用户A与用户B通信。

    应该清楚的是,服务器不能是将文件发送到B的服务器,而且由于服务器是PHP唯一运行的地方,因此不能使用PHP发送文件。

    用户A和B可以保证共享的语言是Javascript。幸运的是,有一个非常新的规范来解决这个问题,称为WebRTC(RTC代表实时通信)。

    它是为了解决你的问题而设计的,你应该使用它。它目前只在Chrome和Firefox Nightlies中使用。最近,Chrome已经变得足够稳定,可以与Firefox对话,而不仅仅是Chrome与Chrome和Firefox与Firefox。

    应该清楚的是,这是一个全新的概念!

    根据你的项目和你正在做的事情的范围,这可能是一个好的选择,也可能不是。

    http://www.webrtc.org/ 可能会帮你。

    https://webrtc-experiment.appspot.com/file-hangout/ 是你尝试做什么的演示。

    https://webrtc-experiment.appspot.com/docs/how-file-broadcast-works.html 是关于如何做到这一点的一些信息。