Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/01/2016, 02:18
Avatar de sergio17791
sergio17791
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 21
Antigüedad: 8 años, 5 meses
Puntos: 1
Descargar fichero desde el servidor

Buenas a todo el mundo, feliz año nuevo!

Estoy realizando una interfaz web interna para mi empresa, en la que tengo un área de administración. El servidor tiene una base de datos enorme con gran cantidad de datos. En el área de administración estoy haciendo un botón para exportar la base de datos en un fichero .sql y guardarla donde desee quien ha ejecutado el botón. Tengo el siguiente código:

El formulario con el botón:
Código:
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
            <input class="button" id="exportar_bd" name="exportar_bd" type="Submit" value="Exportar Base de Datos"/>
        </form>
        <?php
            if(isset($_POST['exportar_bd']))
            {
                exportar_bd();
            }
        ?>
La función:
Código:
function exportar_bd()
{
    
    $salida = shell_exec('mysqldump -uuser -ppassword nombreBaseDeDatos > meteoceam.sql');
    
    $fichero = 'meteoceam.sql';

    if (file_exists($fichero)) 
    {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($fichero).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($fichero));
        readfile($fichero);
        exit;
    }
  
}
El fichero .sql se genera perfectamente y se guarda en la carpeta del servidor. Mi problema es al descargarlo, en vez de darme un resultado tipo esto, que es lo que deseo (la imagen la he sacado de internet):



se me abre el fichero con el editor de texto, lo cuál al ser un fichero tan pesado se demora mucho en abrirlo y puede hasta colgar el pc...

¿Alguna solución para obtener algo tipo lo de la imagen?

Muchas gracias!