纯PHP的torrent客户端?

时间:2011-01-01 21:59:02

标签: php bittorrent

我是PHP CMS的开发人员,我想为它添加BitTorrent功能。 CMS已经允许用户上传其他用户可以下载,评论等文件,但我认为如果CMS可以通过BitTorrent通过.torrent元数据文件提供这些下载,或者可以改进(特别是对于低带宽网站)通过磁铁链接,以便共享上传负担。

看起来非常简单,因为我可以插入大量现有的跟踪器,并且创建所需元数据的过程已有详细记录,但最后一个难题是使网站充当文件的种子,以防没有其他人播种(例如,当它新添加时)。我花了一段时间搜索,但找不到任何可以通过BitTorrent播种文件的PHP代码,无论是通过跟踪器还是通过DHT。像rtorrent,Vuze等洪流应用程序有很多前端,但我正在寻找纯PHP,因为我不想引入用户在糟糕,锁定的共享主机帐户上无法满足的依赖项。有没有人知道任何能够解决这个问题的PHP代码,还是我必须自己动手?

5 个答案:

答案 0 :(得分:3)

你想要什么在理论上是可能的。

有一些负担,如命名虚拟主机和错误的侦听端口和执行时间限制,但理论上您可以遵循规范并在PHP中执行所有操作。你可以打开套接字并将原始数据写入其中,理论上任何事情都是可能的。

但它完全荒谬而毫无意义。

但是你的问题并不新鲜,而且有解决方案。

它们被称为传播广告。

它们中的大多数都提供了边缘广播,以便以高速和低延迟提供内容(这是通常的用例),但您也可以使用它们来平衡流量。

大多数人都花钱。

但有一个项目专门讨论这个非常具体的问题。缓存内容并为低带宽网站提供内容,并且只从那里获取内容。

它叫coral cdn,你应该检查一下。最常用的商业广告是akamai,cachefly和level3。

答案 1 :(得分:1)

从长远来看,你必须有自己的服务器,因为你需要在服务器上运行你的文件和(a)种子的torrent客户端?然后你可以通过PHP访问,这将是快速和简单的。我已经使用Transmission for Linux服务器完成了这项工作。

答案 2 :(得分:0)

我不认为这是PHP的工作。如果我理解你想要正确做什么,由于PHP脚本可以运行的时间限制,它在共享主机上根本不起作用。

任何超过允许的30或60秒的torrent上传或下载过程都必须跳转到下一页,重新连接并重新启动操作。我看不出这是如何起作用的。

我认为您在PHP中可以做的最好的事情是将文件提供给负责播种的torrent网站。 Clearbits(由SO用来提供montly数据转储)可能是一个有用的服务(但它不是免费的。)

答案 3 :(得分:0)

您可以超越PHP在php.ini文件中默认设置的时间限制。但是,如果您的主持人发现此消息,他们可能会锁定您如果您使用超过3%的机器资源,大多数共享托管服务提供商将锁定您的帐户。尝试在PHP中编写一个bittorent客户端是荒谬的,除非你有一台专门的机器来运行它。

将此添加到您的配置文件或每个请求中包含的任何文件。

// A Timeout of 5 minutes
ini_set('max_execution_time', 300);

请注意,除非您执行以下

之类的操作,否则必须以秒为单位指定时间
$timeout_minutes = 5;
ini_set('max_execution_time', 60 * $timeout_minutes);

答案 4 :(得分:-1)

可能是我迟到了,但你可以使用Amazon S3。 (不仅仅是典型的webseed。)

见文件: http://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html

您只需将文件从共享服务器上传到S3,然后分发torrent文件,直接从S3支付传出带宽。