2011-01-01 11 views
6

Soy desarrollador de un PHP CMS y quiero agregarle una capacidad de BitTorrent. El CMS ya permite a los usuarios subir archivos que otros usuarios pueden descargar, comentar, etc., pero creo que esto podría mejorarse (especialmente para sitios con poco ancho de banda) si el CMS pudiera ofrecer estas descargas a través de BitTorrent, ya sea a través de archivos de metadatos .torrent o a través de enlaces magnet, para que la carga de carga se comparta.Cliente PHP puro torrente?

Parece bastante sencillo, ya que hay muchos rastreadores existentes que podría conectar, y el proceso de creación de los metadatos necesarios está bien documentado, pero la última pieza del rompecabezas es hacer que el sitio actúe como una semilla para los archivos, en caso de que nadie más esté sembrando (por ejemplo, cuando se acaba de agregar). He pasado un tiempo buscando, pero no encuentro ningún código PHP que sembrará archivos a través de BitTorrent, ya sea a través de un rastreador o a través de DHT. Hay muchas interfaces para aplicaciones de torrents como rtorrent, Vuze, etc., pero estoy buscando PHP puro, ya que no quiero introducir dependencias que no puedan ser satisfechas por los usuarios en cuentas de hospedaje compartidas defectuosas y bloqueadas . ¿Alguien sabe de algún código PHP capaz de flotar, o tendré que hacer el mío?

+3

¿quieres una semilla de torrente de cuentas de alojamiento compartido puramente escrito en php? hay un burdeon de hosts virtuales con nombre y el puerto equivocado ... pero está bien, teóricamente es posible. pero es definitivamente absurdo, equivocado y sin sentido. –

Respuesta

0

No puedo ver que esto sea un trabajo para PHP. Si entiendo lo que quiere hacer correctamente, no funcionará en absoluto en el alojamiento compartido debido al límite de tiempo en que se puede ejecutar un script PHP.

Cualquier torrent carga o proceso de descarga que lleva más tiempo que el permitido 30 o 60 los segundos tendrían que pasar a la siguiente página, volver a conectarse y reiniciar la acción. No puedo ver cómo podría funcionar esto.

Creo que lo mejor que puedes hacer en PHP es servir un archivo a un sitio de torrents que se encarga de la siembra. Clearbits (utilizado por SO para proporcionar el volcado de datos mensual) podría ser un servicio útil para eso (pero no es gratis).

+0

Para ser sincero, no veo que PHP sea una buena herramienta para ningún trabajo, pero es el único requisito que se puede confiar incluso en los peores servidores (la mayoría de las veces, al menos). El límite de tiempo es ciertamente un problema, y ​​es por eso que esperaba que alguien más inteligente que yo ya hubiera resuelto este problema;) Si tuviera que hacerlo yo mismo, probablemente solo abusaría de la naturaleza resistente y reanudable de BitTorrent al permitir que PHP sembrase tanto como sea posible en cualquier el tiempo que tiene, y reaparecerlo de tantas maneras como pueda –

+1

"PHP como una buena herramienta para cualquier trabajo" Entonces, ¿para qué usarlo? Por cierto, con los scripts CLI, el límite de tiempo no se aplica. – frostymarvelous

3

Bueno, teóricamente es posible lo que quieras.

existen algunas cargas como hosts virtuales con nombre y puertos de escucha erróneos y límites de tiempo de ejecución, pero en teoría podría seguir las especificaciones y hacer todo en php. puedes abrir tomas y escribir datos en bruto para que teóricamente todo sea posible.

pero es totalmente absurdo y sin sentido.

Sin embargo, su problema no es nuevo y existen soluciones para eso.

se llaman cdns de propagación.

la mayoría de ellos proporcionan edgecasting para entregar contenido con alta velocidad y baja latencia (este es el caso de uso habitual), pero también puede usarlos para equilibrar el tráfico.

la mayoría de los cdns de coruse cuestan dinero.

pero hay un proyecto dedicado a este problema muy específico. para almacenar en caché el contenido y entregarlo para sitios con poco ancho de banda y solo obtenerlo desde allí.

se llama coral cdn, deberías echarle un vistazo. los comerciales probablemente más usados ​​son akamai, cachefly y level3.

0

Puede superar el límite de tiempo que PHP ha establecido de manera predeterminada en el archivo php.ini. Sin embargo, si sus anfitriones ven esto, pueden bloquear su cuenta. La mayoría de los proveedores de alojamiento compartido bloquearán su cuenta si usa más del 3% de los recursos de las máquinas. Tratar de escribir un cliente bittorent en PHP es absurdo a menos que tengas una máquina dedicada para ejecutarlo.

agréguela a su archivo de configuración o cualquier archivo que se incluya en cada solicitud.

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

Tenga en cuenta que se tiene que especificar el tiempo en segundos a menos que haga algo como lo siguiente

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

A la larga, usted tiene que tener su propio servidor para esto, porque es necesario para ejecutar un cliente de torrent en su servidor con su (s) archivo (s) y (a) semilla (s)? Entonces podrías acceder a través de php, sería rápido y fácil. He hecho esto con Transmission para un servidor Linux.

-1

Puede que tenga años de retraso pero puede utilizar Amazon S3 para esto. (no sólo Webseed típico.)

Véase el documento aquí: http://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html

Usted acaba de subir archivos desde un servidor compartido para S3 luego distribuir el archivo torrent y acaba de pagar por el ancho de banda saliente desde S3.

+0

esto de ninguna manera responde la pregunta, pero es exactamente lo que estaba buscando. Gracias – wischi