Visualizzazione risultati 1 fino 10 di 10

Discussione: backup database

  1. #1
    Guest

    Predefinito backup database

    fra poco aprirò un altro sito dove portò usare anke i cron job allora ho deciso di farmi uno script ke mi faccia il backup del ftp e di tutti i database presenti sul mio spazio allora ho fato prima quello ke fa il backup del ftp ke va tutto ok invece con quello x il database ho alcuni problemi: fino a creare il codice x creare database e tabelle funziona quando deve fare il backup dei dati nn va salva solo su 3 tabelle.

    ecco il codice:

    Codice PHP:
    <?
    include('config.php');
    class
    dump_db
    {
    function
    dump_db()
    {
    global
    $host, $user, $pass, $cr_db;
    $this->host = $host;
    $this->user = $user;
    $this->pass = $pass;
    $this->cr_db = $cr_db;

    if(
    $this->connetti() == false )
    {
    die(
    mysql_error());
    }
    }

    function
    connetti()
    {
    if( (
    $this->db = mysql_connect($this->host, $this->user, $this->pass)) == false )
    {
    return
    false;
    }
    return
    true;
    }

    function
    dump()
    {
    $back = '';
    $query = mysql_query("SHOW DATABASES", $this->db) or die(mysql_error());
    for(
    $x = 0; $x < mysql_num_rows($query); $x++ )
    {
    $database = mysql_result($query, $x);
    if(
    $this->cr_db )
    {
    $back .= "CREATE DATABASE `{$database}`;\n\n";
    }
    $new_query = mysql_query("SHOW TABLES FROM {$database}", $this->db) or die(mysql_error());
    for(
    $i = 0; $i < mysql_num_rows($new_query); $i++ )
    {
    $re = mysql_result($new_query, $i);
    $back .= " CREATE TABLE `{$re}` (\n";
    $nquery = mysql_query("SHOW COLUMNS FROM {$database}.{$re}", $this->db) or die(mysql_error());
    for(
    $k = 0; $k < mysql_num_rows($nquery); $k++ )
    {
    $colun = mysql_result($nquery, $k, true);
    $tb = mysql_result($nquery, $k);
    $campo = $tb;
    $my = mysql_query("SHOW COLUMNS FROM {$database}.{$re} LIKE '{$campo}'") or die(mysql_error());
    $rmy = mysql_fetch_array($my);
    $back .= ' `'.$campo.'`' . ' ' . $rmy['Type'];
    $back .= ($rmy['Extra'] != '') ? ' '.$rmy['Extra'] : '';
    $back .= ($rmy['Key'] != '') ? ' PRIMARY KEY' : '';
    if(
    $k+1 != mysql_num_rows($nquery) )
    {
    $back .= ",";
    }
    $back .= "\n";
    }
    $st = mysql_db_query($database, "SHOW TABLE STATUS LIKE '{$re}'", $this->db) or die(mysql_error());
    $rst = mysql_fetch_array($st) or die(mysql_error());
    $eng = $rst['Engine'];
    $aut = ($rst['Auto_increment'] == '') ? 1 : $rst['Auto_increment'];
    $back .= ") ENGINE={$eng} AUTO_INCREMENT={$aut};\n\n";
    @
    set_time_limit(120);
    $campi = mysql_query("SHOW COLUMNS FROM {$database}.{$re}") or die(mysql_error());
    $tot_campi = '';
    $a = 1;
    while(
    $rc = mysql_fetch_array($campi) )
    {
    $tot_campi .= '`'.$rc['Field'].'`';
    if(
    $a != mysql_num_rows($campi) )
    {
    $tot_campi .= ', ';
    }
    $a++;
    }
    }
    $tc = $tot_campi;
    $tot_campi = '';
    $a = 1;
    $qq = @mysql_query("SELECT * FROM {$database}.{$re}", $this->db) or die(mysql_error());
    while(
    $rq = @mysql_fetch_array($qq) )
    {
    $back .= "INSERT INTO `{$re}` ($tc) VALUES (";
    $cc = explode(', ', $tc);
    for(
    $z = 0; $z < count($cc); $z++ )
    {
    $back .= "'".$rq[$z]."'";
    if(
    $z+1 != count($cc))
    {
    $back .= ', ';
    }
    }
    $back .= ");\n";
    }
    $back .= "\n";
    }
    $this->back = $back;
    return
    $back;
    }

    function
    create_file()
    {
    $filename = 'dump_db_' . date('d-m-y') . '.sql.gz';
    $handle = gzopen($filename, 'wb9');
    if(
    gzwrite($handle, $this->dump(), strlen($this->dump())) )
    {
    return
    true;
    }
    else
    {
    return
    false;
    }
    gzclose($handle);
    }
    }
    $back = new dump_db();
    echo
    nl2br($back->dump());
    /*if( $back->create_file() )
    {
    echo "Il backup dei database è stato eseguito con successo";
    }
    else
    {
    die('Errore durante l\'esportazione del database');
    }*/
    ?>
    l'ultimo pezzo è commentato xke cosi nn crea il file ma mi stampa il contenuto

    ciao è grazie ^__^

  2. #2
    Guest

    Predefinito

    nessuno ha trovato qualche errore??

  3. #3
    Ospite Guest

    Predefinito

    A parte il fatto che il database è uno solo...
    Non puoi usare semplicemente il nuovo TOOL di Altervista, che fa tutto da solo?

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da gsvisinale
    A parte il fatto che il database è uno solo...
    Non puoi usare semplicemente il nuovo TOOL di Altervista, che fa tutto da solo?
    purtroppo no xke nn sono su altervista cmq mi serve qualcosa ke si auto esegua e poi sul nuovo host ho + di un database

    ciao ^__^

  5. #5
    Guest

    Predefinito

    Uhm, perchè alcune variabili nel constructor della prima classe sono chiamate come variabili globali (senza peraltro esistere, a meno che non siano in config.php)?
    Non puoi settarle passandole come parametri nel'inizializzazione della classe (il constructor serve a quello), così vai meglio a cambiare dati, altrimenti tanto vale programmare sequenziale...

  6. #6
    Guest

    Predefinito

    si quelle variabili sono settate in config.php cmq hai ragione sul fatto di metterle all'interno della classe...
    ma nn hai trovato nessun errore soprattutto sulla parte finale ke dovrebbe salvare i dati delle tabelle ke nn funziona bene??

    ciao ^__^

  7. #7
    Guest

    Predefinito

    ma nn ti restituisce nessun errore?

  8. #8
    Guest

    Predefinito

    no niente solo in 3 tabelle recupera i dati le altre nn aggiunge nessun INSERT INTO ecc...

    ciao ^__^

  9. #9
    Guest

    Predefinito

    nn ho guardato bene lo script, ma se le prime tabelle le carica forse nn si tratta di un errore.... le tabelle ke cerchi di leggere sn grandi? fai una prova con tabelle con pochi campi....

  10. #10
    Guest

    Predefinito

    il problema è ke le tabelle dove fa il dump anke dei dati sono le ultime 2 e un in mezzo

    ciao ^__^

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •