Foros del Web » Programando para Internet » PHP »

PHP & Ancho de Banda

Estas en el tema de PHP & Ancho de Banda en el foro de PHP en Foros del Web. Buenas. mi duda es si se puede limitar el ancho de banda desde PHP. Yo uso la funcion 'readfile()' para la descarga de ficheros y ...
  #1 (permalink)  
Antiguo 08/11/2005, 13:29
 
Fecha de Ingreso: octubre-2005
Mensajes: 18
Antigüedad: 18 años, 6 meses
Puntos: 1
PHP & Ancho de Banda

Buenas. mi duda es si se puede limitar el ancho de banda desde PHP. Yo uso la funcion 'readfile()' para la descarga de ficheros y me gustaria limitar el ancho.

Espero q me podais ayodar y gracias de antemano
  #2 (permalink)  
Antiguo 09/11/2005, 05:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Con readfile() lees el archiov .. pero donde indicas tu descarga no es con readfile() sino con cabeceras HTTP (supongo .. por qué no muestras el código de como lo haces).

El ancho de banda lo limita tu servidor HTTP .. no PHP .. No sé si dentro del protocolo HTTP (tendrías que revisarlo) hay alguna cabecera que indique a que rátio de trasnferencia (bits/segundo) debe ser descargado el archivo que se está entregando ..

A lo sumo tal vez vía PHP podrías "contar" cuantos bytes envias al cliente X concreto que está efectuando descargas y de ahí limitar cuantos bytes descargará a intervalo de tiempo (registrando que se descarga (archivo) y que cliente lo descarga .. o totalizando lo que cada cliente descarga). Hablo de "cliente" (por IP) por qué no sé si tus descargas sólo las pueden hacer usuarios registrados y controlados por tu aplicación o no .. Si especificas mejor tu caso concreto se podrían ver soluciones al tema o propuestas.

Un saludo,
  #3 (permalink)  
Antiguo 09/11/2005, 05:34
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Creo que si

no recueldo cual es la funcion que te mide el peso de los archivos que descargan o suben de tu web.. la cosa seria preparar un script que sirva de firtro para todos los archivos existente a descargar o mostrar en la web.-

ejemplo..

limite_ancho.php?peso=file.php

y el peso de cada archivo a mostrar en la web o descargar, pase por ese filtro, asi ese script toma en numero de KB que contenga ese archivo y se valla acomulando en un temp que uses como acumulador.. cuando llegue a la cantidad maxima de peso descargado.. condicionas que detengas las acciones de descargas..

Podria ser un inicio, solo estoy dando una teoria.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #4 (permalink)  
Antiguo 09/11/2005, 08:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por xyyy7
Creo que si

no recueldo cual es la funcion que te mide el peso de los archivos que descargan o suben de tu web.. la cosa seria preparar un script que sirva de firtro para todos los archivos existente a descargar o mostrar en la web.-

ejemplo..

limite_ancho.php?peso=file.php

y el peso de cada archivo a mostrar en la web o descargar, pase por ese filtro, asi ese script toma en numero de KB que contenga ese archivo y se valla acomulando en un temp que uses como acumulador.. cuando llegue a la cantidad maxima de peso descargado.. condicionas que detengas las acciones de descargas..

Podria ser un inicio, solo estoy dando una teoria.-
Si hace un "readfile()" .. puede usar filesize() para ese control ..

Por lo menos así mide el archivo a descargar y ya lo comparará con alguna quota asignada al usuario / tiempo ...

Un saludo,
  #5 (permalink)  
Antiguo 09/11/2005, 11:55
 
Fecha de Ingreso: octubre-2005
Mensajes: 18
Antigüedad: 18 años, 6 meses
Puntos: 1
Gracias por las respuestas

yo mando las siguientes cabeceras antes de usar el readfile()

$mimeType="application/zip";
if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 5') ||
strpos($_SERVER['HTTP_USER_AGENT'],'Opera 7'))
$mimeType="application/x-download";

$filename=chr(34).$fichero.chr(34);
header("content-disposition: attachment; filename=".$filename);

header("content-type: ".$mimeType);

$tam=$fichero;
header("content-length: ".filesize($tam));


pero el readfile pasa del apache porque quien lo interpreta es el PHP.

He encontrado por ahi algo sobre usar la funcion "passthru()" y dentro ejecutar un comando de descarga para limitarlo como curl, pero no me va y estoy dandole vueltas

la linea seria

passthru('curl --limit-rate 100K "http://domain.com/file"');

bueno, espero q con esta aclaracion podamos conseguir q se limite el ancho de banda

saludos
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 15:30.