Foros del Web » Programando para Internet » PHP » Configuración PHP »

Enviar archivo - Puente de datos - Solo Expertos

Estas en el tema de Enviar archivo - Puente de datos - Solo Expertos en el foro de Configuración PHP en Foros del Web. Hola a todos, Tengo un "problema" interesante. Hice un script que abre un archivo de video (AVI) de, por ejemplo, 600mb y fuerzo su descarga, ...
  #1 (permalink)  
Antiguo 06/06/2009, 16:28
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 1
Exclamación Enviar archivo - Puente de datos - Solo Expertos

Hola a todos,
Tengo un "problema" interesante.

Hice un script que abre un archivo de video (AVI) de, por ejemplo, 600mb y fuerzo su descarga, de forma que haciendolo bien, la integridad del archivo no se ve afectada.
Fuerzo la descarga leyendo el archivo a descargar fopen(), y fread() para abrirlo, y se fuerza por tanto la descarga con headers.

Una vez que sabemos esto, quiero decir que dispongo de un servidor dedicado de 8 nucleos (2,66Ghz) y 6GB ram, y además 20gb de SWAP y 230gb de disco.

Por tanto, tengo establecidos parámetros de timeouts para evitar que, durante la transferencia de dicha película (700mb) que puede durar hasta 1 hora, establecí:

memory_limit = -1 [ -1 = ILIMITADO, esto es IMPORTANTÍSIMO, ya que es lo que limita el peso de los archivos, si quiero forzar la descarga de un AVI de 700mb, si este valor es inferior, se joderá :) ]
max_execution_time = 5400 [ Así nos aseguramos de que no haya problemas ]
max_input_time = 5400 [Igual, es necesario ]

La cuestión, tras haber configurado esto del php.ini, y configurar el limite de ram por proceso en el cpanel para matarlo, puesto en ilimitado, debería funcionar.

Pues bien, todo funciona correctamente, pero una vez sobrepasado los 252mb, se corta la conexión.

PREGUNTA:
¿Qué parametro puede estar interfiriendo?
Nota: La descarga se paró a los 24 minutos, ~25 segundos.

(Lo probé ambas veces con el mismo archivo y se para a los 252mb).

Un saludo y gracias por su tiempo.

Última edición por filmixt; 07/06/2009 a las 02:49
  #2 (permalink)  
Antiguo 06/06/2009, 16:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

Toc, toc, se puede?... no soy experto, pero me interesa ver la solucion al problema, espero que no te moleste si me siento aqui a esperar.

P.D. Has probado con readfile() en vez de fopen() + fread()?, ya probaste tambien si puedes descargar el archivo directamente (peticion http sin el script)?
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 06/06/2009, 16:56
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

Obtener el archivo directamente está descartado, ya que se trata justamente de que el servidor sea el que solicite dicho archivo, y no el usuario, actuando en cierta forma como proxy, ese es el objetivo.

Toda idea es bienvenida xDD.

En cuanto al readfile, lo estoy probando, te daré el resultado mañana.
Saludos!
  #4 (permalink)  
Antiguo 06/06/2009, 17:20
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años, 8 meses
Puntos: 19
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

Cita:
Iniciado por Triby Ver Mensaje
Toc, toc, se puede?... no soy experto, pero me interesa ver la solucion al problema, espero que no te moleste si me siento aqui a esperar.

P.D. Has probado con readfile() en vez de fopen() + fread()?, ya probaste tambien si puedes descargar el archivo directamente (peticion http sin el script)?
jejeje yo iba a postear algo = jeje pero no vaya hacer que su majestad se moleste, puedo ayudar a la solucion pero como no soy experto me quedo callado
__________________
La estadística es una ciencia que demuestra que si mi vecino tiene dos coches y yo ninguno, los dos tenemos uno.
  #5 (permalink)  
Antiguo 06/06/2009, 17:21
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

"Toda idea es bienvenida xDD."

Es complicado, ese es el tema XD.

Con readfile parece ser que no se corta, pero a partir de los 259mb, el server de 100mb de velocidad, da el archivo a 1kb/s o por ahí, por tanto se estanca.
¿Hay un limitador de velocidad o algo?
Uso cpanel, creo que no...
Saludos!
  #6 (permalink)  
Antiguo 06/06/2009, 17:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

Supongo que vas a permitir la descarga solo a determinado tipo de usuarios y por eso estas haciendo el script, pero no esta demas verificar si puedes hacer una descarga directa, para descartar errores en el archivo.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 06/06/2009, 19:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

Tema trasladado desde PHP.

Considero muy arrogante poner "solo expertos" en un tema, pero bueno, cada quien lo suyo.

PD ve esta función: set_time_limit().

Saludos y lamento no poder ayudarte mas pero no soy experto.
  #8 (permalink)  
Antiguo 07/06/2009, 02:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 1
Por la presente me retracto de la expresión la cual parece ser no tiene cabida en esta circunstancia, y espero disculpen la posible desconsideración y falta de respeto hacia los miembros de esta comunidad, no me considero ni mucho menos arrogante, pero bueno, fallos los comentemos todos.

Un saludo.

Pasados varios minutos (10-20min) la velocidad cae de forma que de 300-450 pasa a 10-1kb/s en segundos. ¿por qué?...

Traigo novedades. Las descargas se quedan paradas a los 252mb justamente.

Creo que esto descarga los timeouts, ya que tanto descargando a 600kb/s como a 200kb/s se para al llegar a ese peso.

Nadie sabe que limite puede hacer? en php o apache?

El limite de memoria en php está establecido en infinito:
memory_limit = -1

Saludos

Última edición por GatorV; 07/06/2009 a las 09:50
  #9 (permalink)  
Antiguo 10/06/2009, 05:57
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

Es una pena que nadie haya llegado a una conclusión...
Gracias a todos por intentarlo :)
Voy a intentarlo en otros foros internacionales.
Un saludo a todos!
  #10 (permalink)  
Antiguo 11/06/2009, 15:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

Probaste la sugerencia de GatorV?
Probaste con descarga directa para saber si el origen del problema es relativo a PHP?

P.D. FDW = Foro internacional donde participan personas de muchos paises... over big charcos (overseas), around the world.
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 13/06/2009, 08:03
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Enviar archivo - Puente de datos - Solo Expertos

Claro que si triby. El problema es de php, que no es capaz de soportar más de 2mb imprimiendo datos en un documento.
He llegado a lograrlo hasta 200mb, pero luego dejó de funcionar repentinamente.
Al final hice que descargara los archivos al servidor, y proporcionar así la descarga.
¿Alguna idea de como hacerlo de esta manera?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:54.