![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
03/07/2009, 06:15
|
| | Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años, 9 meses Puntos: 0 | |
Respuesta: Backup de base de datos mysql desde formulario en php Código PHP: <?php function free_result($query_id=-1) { if( $query_id!=-1) { $query_id=$query_id; } return @mysql_free_result($query_id); } function query_first($query_string) { $res = query($query_string); $returnarray = fetch_array($res); free_result($res); return $returnarray; } function query($query_string) { $query_id = mysql_query($query_string); if( !$query_id) { problemas("Invalid SQL: ".$query_string); } return $query_id; } //------- // Main ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <title>Dump y Download la Base de Datos</title> <!-- no cache headers --> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="no-cache"> <meta http-equiv="Expires" content="-1"> <meta http-equiv="Cache-Control" content="no-store"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Cache-Control" content="must-revalidate"> <!-- end no cache headers --> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </HEAD> <BODY bgcolor="#D5D5D5" text="#000000" id="all" leftmargin="25" topmargin="25" marginwidth="25" marginheight="25" link="#000020" vlink="#000020" alink="#000020"> <center><h1>Dump y Download la Base de Datos</h1></center> <br> <strong> <?php @set_time_limit( 0 ); echo( "- Base de Datos: '$db_name' en '$db_server'.<br>" ); $error = false; $tablas = 0; $total_tablas = 0; $total_rows = 0; if( !@function_exists( 'gzopen' ) ) { $hay_Zlib = false; echo( "- Ya que no está disponible Zlib, salvaré la Base de Datos sin comprimir, como '$filename'<br>" ); } else { $filename = $filename . ".gz"; $hay_Zlib = true; echo( "- Ya que está disponible Zlib, salvaré la Base de Datos comprimida, como '$filename'<br>" ); } if( !$error ) { $dbconnection = @mysql_connect( $db_server, $db_username, $db_password ); if( $dbconnection) $db = mysql_select_db( $db_name ); if( !$dbconnection || !$db ) { echo( "<br>" ); echo( "- La conexion con la Base de datos ha fallado: ".mysql_error()."<br>" ); $error = true; } else { echo( "<br>" ); echo( "- He establecido conexion con la Base de datos.<br>" ); } } if( !$error ) { // MySQL versión $result = mysql_query( 'SELECT VERSION() AS version' ); if( $result != FALSE && @mysql_num_rows($result) > 0 ) { $row = mysql_fetch_array($result); } else { $result = @mysql_query( 'SHOW VARIABLES LIKE \'version\'' ); if( $result != FALSE && @mysql_num_rows($result) > 0 ){ $row = mysql_fetch_row( $result ); } } if(! isset($row) ) { $row['version'] = '3.21.0'; } } if( !$error ) { $el_path = getenv("REQUEST_URI"); $el_path = substr($el_path, strpos($el_path, "/"), strrpos($el_path, "/")); $result = mysql_list_tables( $db_name ); if( !$result ) { print "- Error, no puedo obtener la lista de las tablas.<br>"; print '- MySQL Error: ' . mysql_error(). '<br><br>'; $error = true; } else { $t_start = time(); if( !$hay_Zlib ) $filehandle = fopen( $filename, 'w' ); else $filehandle = gzopen( $filename, 'w6' ); // nivel de compresión if( !$filehandle ) { $el_path = getenv("REQUEST_URI"); $el_path = substr($el_path, strpos($el_path, "/"), strrpos($el_path, "/")); echo( "<br>" ); echo( "- No he podido crear '$filename' en '$el_path/'. Por favor, asegúrese de<br>" ); echo( " que dispone de privilegios de escritura.<br>" ); } else { $tabledump = "-- Dump de la Base de Datos\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); setlocale( LC_TIME,"spanish" ); $tabledump = "-- Fecha: " . strftime( "%A %d %B %Y - %H:%M:%S", time() ) . "\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); $tabledump = "--\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); $tabledump = "-- Version: " . Str_VERS . ", del " . Str_DATE . ", [email protected]\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); $tabledump = "-- Soporte y Updaters: http://insidephp.sytes.net\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); $tabledump = "--\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); $tabledump = "-- Host: `$db_server` Database: `$db_name`\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); $tabledump = "-- ------------------------------------------------------\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); $tabledump = "-- Server version ". $row['version'] . "\n\n"; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump );
echo("<br>"); $result = query( 'SHOW tables' ); while( $currow = fetch_array($result, DBARRAY_NUM) ) { $total_tablas++; $st = number_format($total_tablas, 0, ',', '.'); echo(" Tablas - Rows procesados: $st - "); $total_rows += fetch_table_dump_sql( $currow[0], $filehandle ); $sc = number_format($total_rows, 0, ',', '.'); echo("$sc<br>"); fwrite( $filehandle, "\n" ); if( !$hay_Zlib ) fwrite( $filehandle, "\n" ); else gzwrite( $filehandle, "\n" ); $tablas++; } echo("<br>"); $tabledump = "\n-- Dump de la Base de Datos Completo."; if( !$hay_Zlib ) fwrite( $filehandle, $tabledump ); else gzwrite( $filehandle, $tabledump ); if( !$hay_Zlib ) fclose( $filehandle ); else gzclose( $filehandle ); $t_now = time(); $t_delta = $t_now - $t_start; if( !$t_delta ) $t_delta = 1; $t_delta = floor(($t_delta-(floor($t_delta/3600)*3600))/60)." minutos y " .floor($t_delta-(floor($t_delta/60))*60)." segundos."; echo( "- He salvado las $tablas tablas en $t_delta<br>" ); echo( "<br>" ); echo( "- El Dump de la Base de Datos está completo.<br>" ); echo( "- He salvado la Base de Datos en: $el_path/$filename<br>" ); echo( "<br>" ); echo( "- Puede bajársela directamente: </strong><a href=\"$filename\">$filename</a>" ); $size = filesize($filename); $size = number_format($size, 0, ',', '.'); echo( " <small>($size bytes)</small><br>" ); } } } if( $dbconnection ) mysql_close();
echo( "</strong><br><br><hr><center><small>" ); setlocale( LC_TIME,"spanish" ); echo strftime( "%A %d %B %Y - %H:%M:%S", time() ); echo( "</small></center>" ); echo( "</BODY>" ); echo( "</HTML>" ); ?> Espero que te sea de ayuda, a mi me funciona perfecto junto con cronjob para hacer un backup diario. Luego tengo un programilla en .net que me copia el archivo mas reciente del servidor a mi pc y asi me olvido de posibles problemas.
saludos! |