Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/11/2003, 23:48
Avatar de nuevo
nuevo
 
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
Me pueden Corregir la funcion que acavo de terminar, Backup+Compress_Zip

pues eso, a ver, si le pueden echar un vistazo, seguro que se puede simplificar o corregir.

Código PHP:
<?php
//MaxBakupBd Function Creada el Domingo a las 06:00 am del 09 de Noviembre del 2003

/*INICIO DE LA FUNCION PARA REALIZAR UN BACKUP DE LA BASE DE DATOS Y COMPRIMIRLO EN ZIP*/

function FUNC_MaxBakupBd($fileNameMySqlDump,$sql_host,$sql_usuario,$sql_pass,$sql_db){//funcion para hacer un backup de la base de datos

    
function FUNC_compressZip($fileNameMySqlDump){//funcion para comprimir la base de datos en zip

            
$fileOriginal $fileNameMySqlDump.".sql";
            
$fileZip $fileNameMySqlDump.".zip";

            
$fp fopen($fileOriginal"r");//abro el fichero a comprimir
            
$datosSqlBakup fread ($fpfilesize($fileOriginal));//leo y compruebo el fichero
             
fclose($fp);//cierro el fichero a comprimir

             
$zp gzopen($fileZip"w9");// metodo de compresion, nivel 9
             
gzwrite($zp$datosSqlBakup);//escribo el fichero zip comprimido
            
gzclose($zp);//cierro el fichero zip comprimido
    
}//termino funcion zip
    

    
$sysOperative = (stristr(PHP_OS'WIN')) ? "Windows" "Linux";//compruebo el sistema operativo del servidor

    
if (empty($sysOperative)){ echo "Error 6000: Se produjo error por no encontrar el sistema operativo del servidor."; exit; }

    
$fileNameMySqlDump date("Y_d_m_H_m_s")."_".$fileNameMySqlDump;//añado la fecha y la hora al nombre del fichero

    
$db_connect mysql_connect($sql_host,$sql_usuario,$sql_pass) or die("MySQL dice: ".mysql_error());//conectamos con la base de datos
    
mysql_select_db($sql_db) or die("MySQL dice: ".mysql_error());//seleccionamos la base de datos

        
switch ($sysOperative){//creo el selector de sistema operativo

            
case 'Windows'://servidores mysql montados en maquinas windows
                
$mySqlDump "c:\mysql\bin\mysqldump.exe -u $sql_usuario --password=$sql_pass --opt $sql_db > $fileNameMySqlDump.sql";//ejecuto el backup
                
system($mySqlDump$resultMySqlDump);
            break;

            case 
'Linux'://servidores mysql montados en maquinas linux
                
$mySqlDump "mysqldump -u $sql_usuario --password=$sql_pass --opt $sql_db > $fileNameMySqlDump.sql";//ejecuto el backup
                
system($mySqlDump$resultMySqlDump);
            break;

            default:
                echo 
"Error 7000: Se produjo error por no ser un sistema compatible con Windows - Unix - Linux.";//si el sistema operativo no existe o no esta definido, error
            
exit;
            break;

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

    
}//termino switch

    
FUNC_compressZip($fileNameMySqlDump);//ejecuto funcion de compresion zip

}//termino funcion

/*FIN DE LA FUNCION*/

/*············································································*/

/*EJEMPLO DE COMO USAR LA FUNCION*/

$sql_host "localhost";  // Host, nombre del servidor o IP del servidor Mysql.
$sql_usuario "xxxx";    // Usuario de Mysql
$sql_pass "xxxx";     // contraseña de Mysql
$sql_db "xxxx";     // Base de datos


session_start();//inicio sessiones para que solo se ejecute el code 1 vez.
session_cache_limiter('nocache,private');//regulo la cache, para no dar error

if (empty($_SESSION['backupMySqlBd'])){//si no existe la session, ejecuto el code

    
$_SESSION['backupMySqlBd']="Realizado";//almaceno un dato cualquiera en la session

        
FUNC_MaxBakupBd("mysql",$sql_host,$sql_usuario,$sql_pass,$sql_db);

} else { echo 
"ya esta, no puedes 2 veces, espera 5 minutos";}//error, ya has hecho el backup


/*EJEMPLO DE COMO USAR LA FUNCION*/
?>
y de paso si ha alguien le gusta....

pd: Maestros, esta funcion tiene un error, cuando comprime no incluye la extension del fichero, se le olvida que es *.sql, pero bueno, funcionar funciona.
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 08/11/2003 a las 23:50