FAQ
Hola, tengo un script en php para descargar archivos (todos son de 3MB), el
problema esta en que tengo cerca de 200.000 descargas al día y en algunas
horas pico el server se bloquea y se cae mysql. Estoy usando la funcion
readfile y tengo la impresión de que el problema esta porque se guarda todo
el archivo en memoria, y si hay varias descargas simultaneas (las
suficientes) mi server truena.
header('Content-type: application/octet-stream');
header("Content-Disposition: attachment; filename=$softwarename;");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($cache));
// @todo cambiar readfile por una redireccion a la url del archivo o una
funcion para leer de byte en byte o otra solucion para no usar tanta memoria
readfile($cache);

Que solución le puedo dar a este problema?

Search Discussions

  • Isart Montane at Oct 5, 2009 at 12:08 pm
    Hola Manolet,

    no puedes hacer que de mandar el archivo se encargue el servidor web en
    lugar de llamar a php?

    Saludos,
    Isart

    2009/10/5 Manolet Gmail <manolet@gmail.com>
    Hola, tengo un script en php para descargar archivos (todos son de 3MB), el
    problema esta en que tengo cerca de 200.000 descargas al día y en algunas
    horas pico el server se bloquea y se cae mysql. Estoy usando la funcion
    readfile y tengo la impresión de que el problema esta porque se guarda todo
    el archivo en memoria, y si hay varias descargas simultaneas (las
    suficientes) mi server truena.
    header('Content-type: application/octet-stream');
    header("Content-Disposition: attachment; filename=$softwarename;");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($cache));
    // @todo cambiar readfile por una redireccion a la url del archivo o una
    funcion para leer de byte en byte o otra solucion para no usar tanta
    memoria
    readfile($cache);

    Que solución le puedo dar a este problema?
  • Gerardo Benitez at Oct 5, 2009 at 3:09 pm
    Hola,

    2009/10/5 Manolet Gmail <manolet@gmail.com>
    Hola, tengo un script en php para descargar archivos (todos son de 3MB), el
    problema esta en que tengo cerca de 200.000 descargas al día y en algunas
    horas pico el server se bloquea y se cae mysql. Estoy usando la funcion
    readfile y tengo la impresión de que el problema esta porque se guarda todo
    el archivo en memoria, y si hay varias descargas simultaneas (las
    suficientes) mi server truena.
    header('Content-type: application/octet-stream');
    header("Content-Disposition: attachment; filename=$softwarename;");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($cache));
    // @todo cambiar readfile por una redireccion a la url del archivo o una
    funcion para leer de byte en byte o otra solucion para no usar tanta
    memoria
    readfile($cache);

    Que solución le puedo dar a este problema?
    También podes usar, la función fread() (
    http://ar.php.net/manual/en/function.fread.php), y leer una ciclicamente una
    determinada cantidad de bytes en un while.

    algo asi.

    if (is_file($fileLocation) and $stream=fopen($fileLocation, "rb")) {
    $contents = '';
    *while(!feof($stream)){
    $contents .= fread($stream, 8192);
    }
    * echo $contents;
    fclose($stream);
    }



    --
    Gerardo Benitez

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedOct 5, '09 at 11:22a
activeOct 5, '09 at 3:09p
posts3
users3
websitephp.net

People

Translate

site design / logo © 2022 Grokbase