Visualizzazione risultati 1 fino 4 di 4

Discussione: Backup MySQL

  1. #1
    Guest

    Predefinito Backup MySQL

    Ho il codice riportato sotto che effettua un backup di un intero Db e me lo fa scaricare....
    Io volevo effettuare una modifica: Invece che farlo scaricare salvarlo nella directory.....
    Ho cercato la stringa fwrtite ma nn la ho trovata quindi non so come modificarlo....

    Codice PHP:
    <?
    $target
    ="file";
    if(
    $target=="file")
    {
    header('Content-Type: application/octetstream');
    header('Content-Disposition: filename="backup.sql"');
    $asfile="download";
    }


    $crlf="\r\n";

    $link = mysql_connect("Host", "user", "psw");
    $database = mysql_select_db("Db");

    $dbname = "Db";

    $dump_buffer="";

    $tables = mysql_query("show tables from $dbname");
    $num_tables = mysql_num_rows($tables);

    if(
    $num_tables == 0)
    {
    echo
    "# No Tables Found";
    exit;
    }

    $dump_buffer.= "# DatabaseBackup $crlf";
    $dump_buffer.= "# Backup made:$crlf";
    $dump_buffer.= "# ".date("F j, Y, g:i a")."$crlf";
    $dump_buffer.= "# Database: $dbname$crlf";
    $dump_buffer.= "# Backed up tables : $dbname $crlf";

    $i = 0;
    while(
    $i < $num_tables)
    {
    $table = mysql_tablename($tables, $i);
    //echo $table . "<br>";
    $dump_buffer.= "# --------------------------------------------------------$crlf";
    $dump_buffer.= "$crlf#$crlf";
    $dump_buffer.= "# Table structure for table '$table'$crlf";
    $dump_buffer.= "#$crlf$crlf";
    $db = $table;
    $dump_buffer.= get_table_def($table, $crlf,$dbname).";$crlf";
    $dump_buffer.= "$crlf#$crlf";
    $dump_buffer.= "# Dumping data for table '$table'$crlf";
    $dump_buffer.= "#$crlf$crlf";
    $tmp_buffer="";
    get_table_content($dbname, $table, 0, 0, 'my_handler', $dbname);
    $dump_buffer.=$tmp_buffer;

    $i++;
    $dump_buffer.= "$crlf";
    }
    echo
    $dump_buffer;
    exit;

    function
    get_table_def($table, $crlf,$dbname)
    {

    $schema_create = "DROP TABLE IF EXISTS $table;$crlf";
    $db = $table;

    $schema_create .= "CREATE TABLE $table ($crlf";

    $result = mysql_query("SHOW FIELDS FROM " .$dbname."."
    . $table) or die();
    while(
    $row = mysql_fetch_array($result))
    {
    $schema_create .= " $row[Field] $row[Type]";

    if(isset(
    $row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
    $schema_create .= " DEFAULT '$row[Default]'";
    if(
    $row["Null"] != "YES")
    $schema_create .= " NOT NULL";
    if(
    $row["Extra"] != "")
    $schema_create .= " $row[Extra]";
    $schema_create .= ",$crlf";
    }
    $schema_create = ereg_replace(",".$crlf."$", "", $schema_create);
    $result = mysql_query("SHOW KEYS FROM " .$dbname."." .
    $table) or die();
    while(
    $row = mysql_fetch_array($result))
    {
    $kname=$row['Key_name'];
    $comment=(isset($row['Comment'])) ? $row['Comment'] : '';
    $sub_part=(isset($row['Sub_part'])) ? $row['Sub_part'] : '';

    if((
    $kname != "PRIMARY") && ($row['Non_unique'] == 0))
    $kname="UNIQUE|$kname";

    if(
    $comment=="FULLTEXT")
    $kname="FULLTEXT|$kname";
    if(!isset(
    $index[$kname]))
    $index[$kname] = array();

    if (
    $sub_part>1)
    $index[$kname][] = $row['Column_name'] . "(" . $sub_part . ")";
    else
    $index[$kname][] = $row['Column_name'];
    }

    while(list(
    $x, $columns) = @each($index))
    {
    $schema_create .= ",$crlf";
    if(
    $x == "PRIMARY")
    $schema_create .= " PRIMARY KEY (";
    elseif (
    substr($x,0,6) == "UNIQUE")
    $schema_create .= " UNIQUE " .substr($x,7)." (";
    elseif (
    substr($x,0,8) == "FULLTEXT")
    $schema_create .= " FULLTEXT ".substr($x,9)." (";
    else
    $schema_create .= " KEY $x (";

    $schema_create .= implode($columns,", ") . ")";
    }

    $schema_create .= "$crlf)";
    if(
    get_magic_quotes_gpc()) {
    return (
    stripslashes($schema_create));
    } else {
    return (
    $schema_create);
    }
    }
    function
    get_table_content($db, $table, $limit_from = 0, $limit_to = 0,$handler)
    {
    // Defines the offsets to use
    if ($limit_from > 0) {
    $limit_from--;
    } else {
    $limit_from = 0;
    }
    if (
    $limit_to > 0 && $limit_from >= 0) {
    $add_query = " LIMIT $limit_from, $limit_to";
    } else {
    $add_query = '';
    }

    get_table_content_fast($db, $table, $add_query,$handler);

    }

    function
    get_table_content_fast($db, $table, $add_query = '',$handler)
    {
    $result = mysql_query('SELECT * FROM ' . $db . '.' . $table . $add_query) or die();
    if (
    $result != false) {

    @
    set_time_limit(1200); // 20 Minutes

    // Checks whether the field is an integer or not
    for ($j = 0; $j < mysql_num_fields($result); $j++) {
    $field_set[$j] = mysql_field_name($result, $j);
    $type = mysql_field_type($result, $j);
    if (
    $type == 'tinyint' || $type == 'smallint' || $type == 'mediumint' || $type == 'int' ||
    $type == 'bigint' ||$type == 'timestamp') {
    $field_num[$j] = true;
    } else {
    $field_num[$j] = false;
    }
    }
    // end for

    // Get the scheme
    if (isset($GLOBALS['showcolumns'])) {
    $fields = implode(', ', $field_set);
    $schema_insert = "INSERT INTO $table ($fields) VALUES (";
    } else {
    $schema_insert = "INSERT INTO $table VALUES (";
    }

    $field_count = mysql_num_fields($result);

    $search = array("\x0a","\x0d","\x1a"); //\x08\\x09, not required
    $replace = array("\\n","\\r","\Z");


    while (
    $row = mysql_fetch_row($result)) {
    for (
    $j = 0; $j < $field_count; $j++) {
    if (!isset(
    $row[$j])) {
    $values[] = 'NULL';
    } else if (!empty(
    $row[$j])) {
    // a number
    if ($field_num[$j]) {
    $values[] = $row[$j];
    }
    // a string
    else {
    $values[] = "'" . str_replace($search, $replace, addslashes($row[$j])) . "'";
    }
    } else {
    $values[] = "''";
    }
    // end if
    } // end for

    $insert_line = $schema_insert . implode(',', $values) . ')';
    unset(
    $values);

    // Call the handler
    $handler($insert_line);
    }
    // end while
    } // end if ($result != false)

    return true;
    }


    function
    my_handler($sql_insert)
    {
    global
    $crlf, $asfile;
    global
    $tmp_buffer;

    if(empty(
    $asfile))
    $tmp_buffer.= htmlspecialchars("$sql_insert;$crlf");
    else
    $tmp_buffer.= "$sql_insert;$crlf";
    }



    function
    faqe_db_error()
    {
    return
    mysql_error();
    }



    function
    faqe_db_insert_id($result)
    {
    return
    mysql_insert_id($result);
    }


    ?>
    Ultima modifica di guglio : 09-12-2007 alle ore 16.09.10

  2. #2
    Ospite Guest

    Predefinito

    Ti basta modificare il valore di $target a "download" e aggiungere:
    Codice PHP:
    if($target == "download")
    fwrite(@fopen(time().".sql","w+"),$dump_buffer);
    dopo:
    Codice PHP:
    echo $dump_buffer;
    Ciao!

  3. #3
    Guest

    Predefinito

    Ho impiegato 30 minuti per capire dove mettere la modifica, e più che dopo direi di metterla al posto di echo $dump_buffer;
    serviva anche a me un script così, grazie mille

  4. #4
    Guest

    Predefinito

    grazie 1000 !!
    CIAO!

Regole di scrittura

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