MyXoops Forum

Re: dboptimize und dbbackup [Script-Workshop] - myXOOPS German Support

silver74

"myXOOPs"-Neuling
Gepostet am:17.09.2004 16:12
silver74
silver74 Offline (Show more)
"myXOOPs"-Neuling
Posts: 59
Since: 03.07.2003
#2

Re: dboptimize und dbbackup

ein kleines UP
Mein Sponsor:

www.1and1.fr

silver74

"myXOOPs"-Neuling
Gepostet am:07.09.2004 20:45
silver74
silver74 Offline (Show more)
"myXOOPs"-Neuling
Posts: 59
Since: 03.07.2003
#1

dboptimize und dbbackup

Hallo,

ich bräuchte einmal euer Fachwissen,denn ich habe zwei tolle scripts gefunden.Der eine optimiert mir meine db und der andere schickt sie mir per mail oder auf den ftp.Ich benutze die beiden schon als cronjob für meine Hompage.Nun frage ich mich wie kann ich die beiden zusammen verbinden in ein eiziges script.
Ausserdem möchte ich gerne noch einen report in die e-mail einfügen.So in etwa wie bei php-stats,nur ich mochte halt eine statistik über meine db.
Hier ein Beispiel:
Zitat:

Hallo Webmaster:

Die folgenden tabellen wurden erfogreich optimiert:

xoops_addresses_broken,xoops_addresses_broken,....

Die folgenden Tabellen wurden erfolgreich/erfolglos gesichert:
xoops_addresses_broken,xoops_addresses_broken,....

Name der Datenbank: XXXX.sql
Grösse der Datenbank:XXXX ko


und nun hier die beiden scripte:

Db-backup:
Zitat:
<?
$dbhost = "XXXXXX";
$dbuser = "XXXXXX";
$dbpass = "XXXXXX";
$dbname = "XXXXXX";
$use_gzip = "no";
$remove_file = "yes";
$use_email = "yes";
$send_to = "mon mail";
$send_from = "mon mail";
$subject = "Backup de la Base ($dbname) - " . date("j F Y");
$use_ftp = "no";
$ftp_server = "";
$ftp_user_name = "";
$ftp_user_pass = "";
$ftp_path = "/";
$echo_status = "yes";


$db = mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db("$dbname",$db);

$path = make_dir();

if ($echo_status == 'yes') {
print "Dumpfile will be written to $path<br>";
}

$result = mysql_query("show tables from $dbname");
while (list($table) = mysql_fetch_row($result)) {
$newfile .= get_def($table);
$newfile .= "\n\n";
$newfile .= get_content($table);
$newfile .= "\n\n";
$i++;
if ($echo_status == "yes") {
print "Dumped table $table<br>";
}
}

$file_name = $dbname . "-" . date("Ymd-Hi") . ".sql";
$file_path = $path . $file_name;

if ($use_gzip == "yes") {
$file_name .= ".gz";
$file_path .= ".gz";
$zp = gzopen($file_path, "wb9");
gzwrite($zp,$newfile);
gzclose($zp);

if ($echo_status == 'yes') {
print "<br>Gzip-file is created...<br>";
}
} else {
$fp = fopen($file_path, "w");
fwrite($fp, $newfile);
fclose($fp);

if ($echo_status == 'yes') {
print "<br>SQL-file is created...<br>";
}
}

if ($use_email == 'yes') {
$fileatt_type = filetype($file_path);

$headers = "From: $send_from";

// Read the file to be attached ('rb' = read binary)
$fp = fopen($file_path,'rb');
$data = fread($fp,filesize($file_path));
fclose($fp);

// Generate a boundary string
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Add the headers for a file attachment
$headers .= "\nMIME-Version: 1.0\n" ."Content-Type: multipart/mixed;\n" ." boundary=\"{$mime_boundary}\"";

// Add a multipart boundary above the plain message
$message = "This is a multi-part message in MIME format.\n\n" ."--{$mime_boundary}\n" ."Content-Type: text/plain; charset=\"iso-8859-1\"\n" ."Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";

// Base64 encode the file data
$data = chunk_split(base64_encode($data));

// Add file attachment to the message
$message .= "--{$mime_boundary}\n" ."Content-Type: {$fileatt_type};\n" ." name=\"{$file_name}\"\n" ."Content-Disposition: attachment;\n" ." filename=\"{$file_name}\"\n" ."Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" ."--{$mime_boundary}--\n";

// Send the message
$ok = @mail($send_to, $subject, $message, $headers);

if ($echo_status == 'yes') {
print "<br>Mail is sent...<br>";
}
}

if ($use_ftp == 'yes') {
if ($use_gzip == 'yes') {
$mode = FTP_BINARY;
} else {
$mode = FTP_ASCII;
}
$ftp_id = ftp_connect($ftp_server);
$login_result = ftp_login($ftp_id, $ftp_user_name, $ftp_user_pass);
$upload = ftp_put($ftp_id, $ftp_path . $file_name, $file_path, $mode);
ftp_close($ftp_id);

if ($echo_status == 'yes') {
print "<br>Backup is uploaded to $ftp_user_name@$ftp_server...<br>";
}
}

if ($remove_file == "yes") {
unlink($file_name);
if ($echo_status == 'yes') {
print "<br>File is deleted...<br>";
}
}

if ($echo_status == 'yes') {
print "<br>I am done!<br>";
}


function make_dir() {
$page = split("/", getenv('SCRIPT_NAME'));
$n = count($page)-1;
$page = $page[$n];
$page = split("\.", $page, 2);
$extension = $page[1];
$page = $page[0];
$script = "$page.$extension";
$base_url = "http://".$_SERVER['SERVER_NAME'];
$directory = $_SERVER['PHP_SELF'];
$url_base = "$base_url$directory";
$url_base = ereg_replace("$script", '', "$_SERVER[PATH_TRANSLATED]");

$path = $url_base;

return $path;
}

function get_def($table) {
$def = "";
$def .= "DROP TABLE IF EXISTS $table;\n";
$def .= "CREATE TABLE $table (\n";
$result = mysql_query("SHOW FIELDS FROM $table") or die("Table $table not existing in database");
while($row = mysql_fetch_array($result)) {
$def .= " $row[Field] $row[Type]";
if ($row["Default"] != "") $def .= " DEFAULT '$row[Default]'";
if ($row["Null"] != "YES") $def .= " NOT NULL";
if ($row[Extra] != "") $def .= " $row[Extra]";
$def .= ",\n";
}
$def = ereg_replace(",\n$","", $def);
$result = mysql_query("SHOW KEYS FROM $table");
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)) {
$def .= ",\n";
if($x == "PRIMARY") $def .= " PRIMARY KEY (" . implode($columns, ", ") . ")";
else if (substr($x,0,6) == "UNIQUE") $def .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
else $def .= " KEY $x (" . implode($columns, ", ") . ")";
}
$def .= "\n);";
return (stripslashes($def));
}

function get_content($table) {
$content="";
$result = mysql_query("SELECT * FROM $table");
while($row = mysql_fetch_row($result)) {
$insert = "INSERT INTO $table VALUES (";
for($j=0; $j<mysql_num_fields($result);$j++) {
if(!isset($row[$j])) $insert .= "NULL,";
else if($row[$j] != "") $insert .= "'".addslashes($row[$j])."',";
else $insert .= "'',";
}
$insert = ereg_replace(",$","",$insert);
$insert .= ");\n";
$content .= $insert;
}
return $content;
}


?>


und hier dboptimize:

Zitat:
<?php

$base='xxxxx';
$login='xxxxx';
$pwd='xxxxx';
$serveur='xxxxx';

//connexion à la base
$db=mysql_connect($serveur, $login, $pwd);
if(!$db){ print "erreur connection $db<br>"; exit; }

// on choisit la bonne base
if(!mysql_select_db($base,$db)){
print "erreur ".mysql_error()."<br>";
mysql_close($db);
exit;
}

$tables = mysql_list_tables($base);
echo 'BASE :'.$base.'<br>';
while (list($table_name) = mysql_fetch_array($tables)) {
$sql = "OPTIMIZE TABLE $table_name";
mysql_query($sql) or exit(mysql_error());
echo $table_name.' : optimisée<br>';
}

mysql_close($db);
?>
Mein Sponsor:

www.1and1.fr
Diesen Thread durchsuchen:  1 Anonyme Benutzer

Aktuell aus dem Forum

Forum Thema Antworten Views Letzter Beitrag
Modulentwicklung New Xoops Xcreate Module 0 5315 26.11.2025 15:22
efkan Gehe zum letzten Beitrag
Modulentwicklung XOOPS Custom Field Module 1 1808 24.11.2025 11:21
Goffy Gehe zum letzten Beitrag