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 ^__^