Foros del Web » Programando para Internet » PHP »

Generar archivo .sql y comprimirlo

Estas en el tema de Generar archivo .sql y comprimirlo en el foro de PHP en Foros del Web. Hola tengo el siguiente script en mi servidor linux para generar un .sql de un mysqldump de una base de datos en mysql Código PHP: ...
  #1 (permalink)  
Antiguo 26/10/2004, 16:26
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 5 meses
Puntos: 0
Generar archivo .sql y comprimirlo

Hola tengo el siguiente script en mi servidor linux para generar un .sql de un mysqldump de una base de datos en mysql

Código PHP:
<?php

$ruta 
".";
include(
"$ruta./include/config.php");

//fijo el date de hoy
$date_month date('m');
$date_year date('Y');
$date_day date('d');
$Date "$date_year-$date_month-$date_day";

//Archivo
$filename "DB_Andinistas_$Date.sql";

//Datos BD
$usuario "usuario";
$passwd "abc123";
$bd "DB_Andinistas";

//forzo al navegador a guardar el archivo
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");

// Utilización del script para windows o unix. Activar las lineas depende de cada caso

//windows
//$executa = "c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd";
//system($executa, $resultado);

//para Unix
$executa "mysqldump -u $usuario --password=$passwd --opt $bd";
system($executa$resultado);


if (
$resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }

?>

bueno mi problema es que ya la base pesa 50 mb y transferir ese archivo .sql por http es medio tedioso porque en cualquier momento la transferencia puede fallar, y quisiera generar un .gz o .zip en compresión para reducir el tiempo de transferencia del archivo.

Estuve leyendo este tema de la FAQ pero tengo mis dudas porque el script falla. el codigo es:

Código PHP:
<?php

   $filenameIMAG
='C:/FoxServ/www/_pruebas/zlib/site.gif';
   
$filenameCOMP='C:/FoxServ/www/_pruebas/zlib/site.gif.gz';

   
/* [STEP 1] */
   
$fp fopen($filenameIMAG"rb");
   
$data fread($fpfilesize($filenameIMAG));
   
fclose($fp);
   
/* [/STEP 1] */

   /* [STEP 2] */
   
$fd fopen ($filenameCOMP"wb");
   
$gzdata gzencode($data,9);
   
fwrite($fd$gzdata);
   
fclose($fd);
   
/* [/STEP 2] */

?>
Si saben como hacer esto os agradezco...
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #2 (permalink)  
Antiguo 26/10/2004, 19:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. tu 2º script .. en que te falla?

Para realizar tus primeras pruebas y más si ves que la cosa no funciona a la primera .. tendrías que comentar (deshabilitar/borrar por el momento) esas funciones header() para que veas los mensajes de error que puedas obtener .. De hecho .. ese: if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; } que tienes nunca lo veras en "pantalla" (en tu navegador) sino que lo veras "impreso" en tu archivo que generes. (ya que usas HTML, supongo que pretenderías ver ese mensajito si la cosa falla .. )

Por cierto . .otra cosa que puedes hacer es en lugar de generar el archivo y preparar las cabeceras HTTP para entregarlo a descarga (esos header() que usas) .. gener un archivo (fopen() .. fwrite() ...) y lo dejas en tu servidor listo para que te lo bajes por FTP por ejemplo. (con o sin compresión si lo necesitas).

Un saludo,
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 18:41.