2011-01-01 13 views
6

Jestem programistą PHP CMS i chcę dodać do niego funkcję BitTorrent. CMS już pozwala użytkownikom przesyłać pliki, które inni użytkownicy mogą następnie pobierać, komentować itp., Ale myślę, że można by to poprawić (szczególnie w przypadku witryn o małej przepustowości), jeśli CMS mógłby oferować te pliki do pobrania za pośrednictwem BitTorrent, za pośrednictwem plików .torrent metadanych lub za pośrednictwem ogniw magnetycznych, dzięki czemu obciążenie związane z przesyłaniem jest udostępniane.Czysty klient torrentowy PHP?

Wydaje się to całkiem proste, ponieważ istnieje wiele istniejących trackerów, do których mogę podłączyć, a proces tworzenia wymaganych metadanych jest dobrze udokumentowany, ale ostatecznym elementem układanki jest uzyskanie strony, aby działała jako nasienie dla plików, na wypadek, gdyby nikt inny nie był zaszczepiany (np. kiedy jest nowo dodany). Spędziłem trochę czasu na wyszukiwaniu, ale nie mogę znaleźć żadnego kodu PHP, który będzie wysyłać pliki za pośrednictwem BitTorrenta, za pośrednictwem trackera lub poprzez DHT. Jest wiele frontendów dla aplikacji torrentowych, takich jak rtorrent, Vuze itp., Ale szukam czystego PHP, ponieważ nie chcę wprowadzać zależności, które nie mogą być zaspokojone przez użytkowników na nieudanych, zablokowanych wspólnych kontach hostingu . Czy ktokolwiek wie o jakimkolwiek kodzie PHP, który może się w nim poruszać, czy będę musiał przetasować swój własny?

+3

Cóż, chcesz ziarno torrenta z udostępnionych kont hostingowych czysto napisane w php? tam burdeon nazwanych wirtualnych hostów i niewłaściwy port ... ale w porządku, teoretycznie jest to możliwe. ale to zdecydowanie absurdalne, złe i bezsensowne. –

Odpowiedz

0

Nie widzę, żeby to było zadanie dla PHP. Jeśli rozumiem, co chcesz zrobić poprawnie, nie będzie działać w ogóle na współdzielonym hostingu z powodu limitu czasu, w którym może uruchomić się skrypt PHP.

Każdy proces przesyłania lub pobierania torrentu trwa dłużej niż dozwolone 30 lub 60 sekundy musiałyby przejść do następnej strony, ponownie się połączyć i ponownie uruchomić akcję. Nie rozumiem, jak to może działać.

Myślę, że najlepsze, co można zrobić w PHP, to plik do strony torrentowej, która zajmuje się wysiewem. Clearbits (używane przez SO w celu dostarczenia z góry zrzutu danych) może być użyteczną usługą (ale nie jest za darmo).

+0

Szczerze mówiąc, nie uważam PHP za dobre narzędzie do jakiejkolwiek pracy, ale jest to jedyny warunek, że nawet najgorsze serwery mogą zostać wykorzystane do spełnienia (przynajmniej przez większość czasu). Limit czasu jest na pewno problem, dlatego miałem nadzieję, że ktoś mądrzejszy ode mnie rozwiązał już ten problem;) Gdybym musiał to zrobić sam, prawdopodobnie nadużyłbym odpornego, wznawianego charakteru BitTorrenta, pozwalając PHP wysiewać jak najwięcej w czymkolwiek czas to ma, i odrodzić go na tyle sposobów, ile mogę –

+1

"PHP jako dobre narzędzie do każdej pracy" Więc dlaczego go używać? BTW, ze skryptami CLI, limit czasu nie ma zastosowania. – frostymarvelous

3

Dobrze, co chcesz, teoretycznie jest możliwe.

Istnieje kilka obciążeń, takich jak nazwane hosty wirtualne i błędne porty listew i terminy realizacji, ale teoretycznie możesz postępować zgodnie ze specyfikacjami i robić wszystko w php. możesz otwierać gniazda i pisać surowe dane, więc teoretycznie wszystko jest możliwe.

ale jest całkowicie absurdalny i bezsensowny.

Jednak Twój problem nie jest nowy i istnieją rozwiązania.

nazywane są kumplami propagacyjnymi. Większość z nich zapewnia edgecasting do dostarczania treści z dużą szybkością i małym opóźnieniem (jest to typowy przypadek użycia), ale można ich również używać do równoważenia ruchu.

większość cdns kosztów na koszt zakładu.

ale jest projekt poświęcony temu bardzo specyficznemu problemowi. buforować zawartość i dostarczać ją dla stron o niskiej przepustowości i pobierać tylko z tego miejsca.

nazywana jest coral cdn, należy to sprawdzić. prawdopodobnie najczęściej używanymi komercyjnymi są akamai, cachefly i level3.

0

Możesz przekroczyć limit czasowy ustawiony domyślnie przez PHP w pliku php.ini. Jeśli jednak gospodarze to zobaczą, mogą zablokować Twoje konto. Większość współdzielonych dostawców hostingu zablokuje twoje konto, jeśli użyjesz więcej niż 3% zasobów komputera. Próba napisania bretońskiego klienta w PHP jest absurdalna, chyba że masz dedykowaną maszynę do jej uruchomienia.

dodać do pliku konfiguracyjnego lub dowolnego pliku, który jest dołączony na każde żądanie.

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

Należy pamiętać, że trzeba określić czas w sekundach, chyba że można zrobić coś jak poniżej

$timeout_minutes = 5; 
ini_set('max_execution_time', 60 * $timeout_minutes); 
1

W dłuższej perspektywie trzeba mieć swój własny serwer na to, ponieważ trzeba uruchomić klient torrent na twoim serwerze z twoimi plikami i (a) nasieniem (ami)? Następnie można uzyskać dostęp za pośrednictwem php, byłoby to szybkie i łatwe. Zrobiłem to z Transmission dla serwera Linux.

-1

Może jestem letnie późno, ale można korzystać z usługi Amazon S3 za to. (nie tylko typowe webseed.)

zobacz dokument tutaj: http://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html

Wystarczy przesłać pliki z udostępnionego serwera S3 następnie rozprowadzić plik torrent i po prostu zapłacił za pasma wychodzącego z S3.

+0

to w żaden sposób nie odpowiada na pytanie, ale jest dokładnie tym, czego szukałem. dzięki – wischi