Okay, hvis vi tager udgangspunkt i dette script:
http://www.eksperten.dk/spm/319984Har så et cronjob der skal køre denne fil, som henter informationerne ind fra en database:
include '_db/config.php';
include '_db/db.php';
$sql = "SELECT * FROM cmsuser ORDER BY user_cusid";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$hostName = $row['user_cusmysqlhost'];
$userName = $row['user_cusmysqluser'];
$userPass = $row['user_cusmysqlpass'];
$userDb = $row['user_cusmysqluser'];
$dbhost = $hostName;
$dbuname = $userName;
$dbpass = $userPass;
$dbname = $userDb;
include_once('mysqldump.php');
};
Derefter køre jeg så denne fil:
<?php
@set_time_limit(600);
$crlf="\n";
// Danish Text
$strNoTablesFound = "Ingen databasetabeller fundet";
$strHost = "Host";
$strDatabase = "Database ";
$strTableStructure = "Struktur for tabel";
$strDumpingData = "Indhold af tabel";
$strError = "Fejl";
$strSQLQuery = "SQL-query";
$strMySQLSaid = "MySQL: ";
$strBack = "Tilbage";
$strFileName = "DB-dump";
$strName = "Backup af database";
$strDone = "Downloadet d.";
$strat = "kl.";
date_default_timezone_set('Europe/Copenhagen');
$date_jour = date ("d-m-Y-H-i-s");
// Log name:
$logName = "$dbname-$date_jour.sql";
header("Content-Disposition: filename=$logName");
header("Content-Type: text/html");
header("Pragma: no-cache");
header("Expires: 0");
// doing some DOS-CRLF magic...
$client = getenv("HTTP_USER_AGENT");
if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
{
$os = $regs[1];
// this looks better under WinX
if (eregi("Win",$os))
$crlf="\r\n";
}
// Get the content of $table as a series of INSERT statements.
// After every row, a custom callback function $handler gets called.
// $handler must accept one parameter ($sql_insert);
function get_table_content($db, $table, $handler)
{
global $crlf;
$result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
$i = 0;
$sLocBuffer = "";
while($row = mysql_fetch_row($result))
{
$table_list = "(";
for($j=0; $j<mysql_num_fields($result);$j++)
$table_list .= mysql_field_name($result,$j).", ";
$table_list = substr($table_list,0,-2);
$table_list .= ")";
if(isset($GLOBALS["showcolumns"]))
$schema_insert = "INSERT INTO $table $table_list VALUES (";
else
$schema_insert = "INSERT INTO $table VALUES (";
for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= " NULL,";
elseif($row[$j] != "")
$schema_insert .= " '".addslashes($row[$j])."',";
else
$schema_insert .= " '',";
}
$schema_insert = ereg_replace(",$", "", $schema_insert);
$schema_insert .= ");";
$sLocBuffer .= trim($schema_insert).$crlf;
$i++;
}
return $sLocBuffer;
}
// Return $table's CREATE definition
// Returns a string containing the CREATE statement on success
function get_table_def($db, $table, $crlf)
{
$schema_create = "";
$schema_create .= "DROP TABLE IF EXISTS $table; CREATE TABLE $table ($crlf";
$result = mysql_db_query($db, "SHOW FIELDS FROM $table") or mysql_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_db_query($db, "SHOW KEYS FROM $table") or mysql_die();
while($row = mysql_fetch_array($result))
{
$kname=$row['Key_name'];
if(($kname != "PRIMARY") && ($row['Non_unique'] == 0))
$kname="UNIQUE|$kname";
if(!isset($index[$kname]))
$index[$kname] = array();
$index[$kname][] = $row['Column_name'];
}
while(list($x, $columns) = @each($index))
{
$schema_create .= ",$crlf";
if($x == "PRIMARY")
$schema_create .= " PRIMARY KEY (" . implode($columns, ", ") . ")";
elseif (substr($x,0,6) == "UNIQUE")
$schema_create .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
else
$schema_create .= " KEY $x (" . implode($columns, ", ") . ")";
}
$schema_create .= "$crlf)";
return (stripslashes($schema_create));
}
function mysql_die($error = "")
{
echo "<b> $strError </b><p>";
if(isset($sql_query) && !empty($sql_query))
{
echo "$strSQLQuery: <pre>$sql_query</pre><p>";
}
if(empty($error))
echo $strMySQLSaid.mysql_error();
else
echo $strMySQLSaid.$error;
echo "<br><a href=\"java script:history.go(-1)\">$strBack</a>";
exit;
}
global $bruger, $dbhost, $dbuname, $dbpass, $dbname;
mysql_connect($dbhost, $dbuname, $dbpass);
@mysql_select_db("$dbname") or die ("Kunne ikke forbinde til databasen");
$tables = mysql_list_tables($dbname);
$num_tables = @mysql_numrows($tables);
if($num_tables == 0)
{
echo $strNoTablesFound;
}
else
{
$i = 0;
$heure_jour = date ("H:i");
$sBuffer = "# ========================================================$crlf";
$sBuffer .= "#$crlf";
$sBuffer .= "# $strName : $dbname$crlf";
$sBuffer .= "# $strDone $date_jour $strat $heure_jour $crlf";
$sBuffer .= "#$crlf";
$sBuffer .= "# ========================================================$crlf";
$sBuffer .= "$crlf";
while($i < $num_tables)
{
$table = mysql_tablename($tables, $i);
$sBuffer .= "$crlf# --------------------------------------------------------$crlf";
$sBuffer .= "#$crlf";
$sBuffer .= "# $strTableStructure '$table'$crlf";
$sBuffer .= "#$crlf$crlf";
$sBuffer .= get_table_def($dbname, $table, $crlf).";$crlf$crlf";
$sBuffer .= "#$crlf";
$sBuffer .= "# $strDumpingData '$table'$crlf";
$sBuffer .= "#$crlf$crlf";
$sBuffer .= get_table_content($dbname, $table, "my_handler");
$i++;
}
// Write log:
$fp = fopen($logName, "w");
fwrite($fp, $sBuffer);
fclose($fp);
}
?>
Er i stadigvæk med? :) - men den går så ind og smider min mysql dump afsted, men! Den tager kun den første database og smider ud, den smider ikke alle ud, som den kobler sig op på..
Håber det hjalp lidt at få syn på sagen?