2011-01-01 9 views
6

Sono uno sviluppatore per un CMS PHP e voglio aggiungere una capacità BitTorrent ad esso. Il CMS consente già agli utenti di caricare file che altri utenti possono scaricare, commentare, ecc. Ma penso che questo potrebbe essere migliorato (specialmente per i siti a bassa larghezza di banda) se il CMS potrebbe offrire questi download tramite BitTorrent, tramite i file di metadati .torrent o tramite collegamenti magnetici, in modo che l'onere del caricamento sia condiviso.Puro client torrent PHP?

Sembra piuttosto semplice, dato che ci sono un sacco di tracker esistenti là fuori cui potrei collegarmi, e il processo di creazione dei metadati richiesti è ben documentato, ma il pezzo finale del puzzle è far sì che il sito agisca come un seme per i file, nel caso nessun altro stia seminando (ad esempio quando è appena aggiunto). Ho passato un po 'di tempo a cercare, ma non riesco a trovare alcun codice PHP che possa seminare i file tramite BitTorrent, tramite un tracker o tramite il DHT. Ci sono un sacco di frontend per applicazioni torrent come rtorrent, Vuze, ecc., Ma sto cercando PHP puro, perché non voglio introdurre dipendenze che non possono essere soddisfatte dagli utenti su account di hosting condiviso scadenti e bloccati . Qualcuno sa di un codice PHP in grado di farlo fluttuare, o dovrò girare il mio?

+3

bene vuoi un torrent seed da account di hosting condiviso scritto in php? c'è il fardello degli host virtuali nominati e la porta sbagliata ... ma va bene, teoricamente è possibile. ma è decisamente assurdo, sbagliato e insensato. –

risposta

0

Non riesco a vedere che questo sia un lavoro per PHP. Se capisco cosa vuoi fare correttamente, non funzionerà affatto su hosting condiviso a causa del limite di tempo in cui uno script PHP può essere eseguito.

Qualsiasi processo di upload o download di torrent che richiede più tempo dei 30 o 60 consentiti secondi dovrebbe passare alla pagina successiva, riconnettersi e riavviare l'azione. Non riesco a vedere come potrebbe funzionare.

Penso che il meglio che puoi fare in PHP sia servire un file in un sito torrent che si occupa della semina. Clearbits (usato da SO per fornire il dump dei dati montly) potrebbe essere un servizio utile (ma non è gratuito)

+0

Per essere onesti, non vedo PHP come un buon strumento per qualsiasi lavoro, ma è l'unico requisito per cui anche i peggiori server possono essere soddisfatti per soddisfare (il più delle volte, almeno). Il limite di tempo è certamente un problema, motivo per cui speravo che qualcuno fosse più abile di me aveva già risolto questo problema;) Se dovessi farlo da solo probabilmente probabilmente abuserei della natura resiliente e riprendibile di BitTorrent permettendo al PHP di seminare il più possibile in qualsiasi tempo che ha, e lo respawn in più modi che posso –

+1

"PHP come un buon strumento per qualsiasi lavoro" Allora perché usarlo? A proposito, con gli script CLI, il limite di tempo non si applica. – frostymarvelous

3

beh, ciò che si desidera è teoricamente possibile.

ci sono alcuni oneri come host virtuali denominati e porte di liste errate e limiti di tempo di esecuzione ma si potrebbe teoricamente seguire le specifiche e fare tutto in php. è possibile aprire socket e scrivere dati grezzi in modo teoricamente tutto è possibile.

ma è totalmente assurdo e insensato.

tuttavia il tuo problema non è nuovo e ci sono soluzioni per questo.

sono chiamati CD di propagazione.

molti di questi forniscono edgecast per la distribuzione di contenuti ad alta velocità e bassa latenza (questo è il solito caso d'uso), ma è anche possibile utilizzarli per bilanciare il traffico.

la maggior parte dei cd di coruse costa.

ma c'è un progetto dedicato a questo problema molto specifico. per memorizzare nella cache il contenuto e consegnarlo per siti con larghezza di banda ridotta e recuperarlo solo da lì.

è chiamato il coral cdn, si dovrebbe verificare. quelli commerciali probabilmente più usati sono akamai, cachefly e level3.

0

È possibile superare il limite di tempo impostato da PHP nel file php.ini. Tuttavia, se i tuoi ospiti lo vedono potrebbero bloccare il tuo account. La maggior parte dei provider di hosting condiviso bloccherà il tuo account se utilizzi più del 3% delle risorse della macchina. Cercare di scrivere un client bittorent in PHP è assurdo a meno che non si disponga di una macchina dedicata per eseguirlo.

aggiungere questo al file di configurazione o qualsiasi file incluso in ogni richiesta.

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

Si noti che è necessario specificare il tempo in secondi a meno che non si fa qualcosa di simile alla seguente

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

Nel lungo periodo è necessario disporre di un proprio server per questo, perché è necessario eseguire un client torrent sul tuo server con il tuo file (s) e (un) seme (s)? Quindi è possibile accedere tramite php, sarebbe veloce e facile. Ho fatto questo con Transmission for a server Linux.

-1

Potrebbe essere che sono in ritardo ma è possibile utilizzare Amazon S3 per questo. (non solo tipico Webseed.)

vedi documento qui: http://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html

È solo caricare i file dal server condiviso a S3 poi distribuire il file torrent e appena pagato per la larghezza di banda in uscita da S3.

+0

questo in nessun modo risponde alla domanda ma è esattamente quello che stavo cercando. grazie – wischi