2011-01-01 21 views
6

私はPHP CMSの開発者であり、BitTorrent機能を追加したいと考えています。 CMSはすでに他のユーザーがダウンロード、コメントなどのファイルをアップロードできるようにしていますが、CMSがBitTorrent経由でこれらのダウンロードをtorrentメタデータファイルまたはマグネットリンクを介して、アップロードの負担が分担されます。純粋なPHPトレントクライアント?

そこには既存のトラッカーがたくさんあり、必要なメタデータを作成するプロセスは十分に文書化されていますが、パズルの最後の部分は誰も他の人がシードしていない場合(例えば、それが新しく追加されたときなど)に、ファイルのシード。検索に時間を費やしましたが、トラッカーやDHT経由でBitTorrent経由でファイルをシードするPHPコードは見つかりませんでした。 rtorrent、Vuzeなどのような急流アプリケーションのフロントエンドはたくさんありますが、私は純粋なPHPを探しています。私は厄介でロックダウンされた共有ホスティングアカウントではユーザーが満足できない依存関係を導入したくありません。誰もがこれを浮かべることができるPHPコードを知っていますか?それとも、自分自身をロールバックする必要がありますか?

+3

よくあなたはPHPで書かれた共有ホスティングアカウントからの急流の種をしたいですか?名前付きバーチャルホストと間違ったポートの厄介なことを...しかし、大丈夫、理論的には可能です。それは間違いなく間違っていて間違っています。 –

答えて

0

これはPHPの仕事ではありません。あなたが正しくしたいことを理解していれば、PHPスクリプトが実行できる時間制限のため共有ホスティングでは全く機能しません。

許可されている30または60秒は次のページにジャンプし、再接続し、アクションを再開する必要があります。これがどのように機能するかわかりません。

私はあなたがPHPでできることは、シード処理を担当するトレントサイトにファイルを提供することだと思います。 Clearbits(SOさんがmontlyデータダンプを提供するために使用しています)は、そのための便利なサービスかもしれません(無料です)。

+0

正直言って私はPHPがどんな仕事にとっても良いツールであるとは思っていませんが、最悪のサーバーでさえも(ほとんどの場合、少なくとも)満たすことができる唯一の要件です。時間制限は確かですこの問題を解決したと思う理由は、私が賢明に思っていた理由です。)自分で解決しなければならないのは、PHPを可能な限りシードできるようにすることで、BitTorrentの回復力のある、それを持っている時間、私はできるだけ多くの方法でそれをrespawn –

+1

"PHPは、どのような仕事のための良いツールとして"次になぜそれを使用する?ところで、CLIスクリプトでは、時間制限は適用されません。 – frostymarvelous

3

あなたが望むものは理論的には可能です。

名前付き仮想ホストや間違ったリスニングポートや実行時間の制限などの負担がありますが、理論的にはその仕様に準拠し、すべてのことをPHPで行うことができます。ソケットを開いて生のデータを書き込むことができるので、理論的には何でも可能です。

ですが、完全に不合理で無意味です。

しかし、あなたの問題は新しいものではなく、そのための解決策があります。

これらを伝播するcdnsと呼びます。

これらのほとんどは、高速で短い待ち時間でコンテンツを配信するエッジキャスティングを提供しています(これは通常の使用例です)。トラフィックのバランスを取るために使用することもできます。

ほとんどのcdrsのcoruseはお金を消費します。

しかし、この非常に特定の問題に専念するプロジェクトがあります。コンテンツをキャッシュして低帯域幅サイト用に配信し、そこから取得するだけです。

coral cdnと呼ばれています。おそらく最もよく使われているものは、akamai、cachefly、level3です。

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); 
1

ような何かをしない限り、あなたは時間を秒単位で指定していることに注意してくださいあなたのファイルと(a)シードとあなたのサーバー上のトレントクライアント?それから、PHPを介してアクセスすることができます、それは速くて簡単です。私はこれを、Linuxサーバ用のTransmissionで行っています。

-1

私は数年遅れているかもしれませんが、Amazon S3を使用することができます。 (だけではなく、一般的なwebseed)

はここにドキュメントを参照してください。 http://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html

あなただけのtorrentファイルを配布し、その後S3に共有サーバーからファイルをアップロードし、ちょうどS3からの送信帯域幅のために支払いました。

+0

これは決して質問に答えるものではなく、私が探していたものです。どうも – wischi

関連する問題