文件在PHP中进行点对点共享

时间:2013-03-08 18:08:40

标签: php file p2p sharing

这个问题对我来说非常重要,因为我正在用PHP开发一个聊天系统,我想允许用户通过某种点对点系统在它们之间共享文件。

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

与用户A和用户B都已连接,而A希望向B发送1GB文件,有2种解决方案:

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

  • 我判断为好的:用户A向B发送文件,而不是在传输之前实际存储在服务器上。

这在PHP中是否可行?

提前谢谢。

1 个答案:

答案 0 :(得分:6)

让我们考虑一下你的问题。

解决方案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是有关如何操作的一些信息。