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
| |||
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 |
| |||
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, |
| |||
Cita: Si hace un "readfile()" .. puede usar filesize() para ese control ..
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.- Por lo menos así mide el archivo a descargar y ya lo comparará con alguna quota asignada al usuario / tiempo ... Un saludo, |
| |||
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 |