Hallo!
Ich möchte auf einer selbstprogrammierten Admin-Seite über einen Formular-Button ein Datenbank-Backup auslösen. Und zwar so, wie man es von phpmyAdmin kennt: dass eine datenbankname.sql-Datei erzeugt wird, die man auf dem Rechner speichern kann. Nur will ich eben nicht jedesmal über phpmyAdmin gehen, sondern in meinem eigenen CMS diesen Befehl über PHP absetzen.
Der Server gehört nicht mir; ich habe lediglich Webspace gemietet und eine Domain mit ein paar Zusätzen wie Datenbank usw. Cronjobs ist in meinem Vertrag leider nicht aktiv.
Von dem mysqldump-Befehl habe ich schon gehört, weiss aber nicht, wie ich den in PHP formulieren soll.
Vielen Dank!! :) 
Moz
			
			
									
						
										
						Datenbank-Backup über PHP-Skript
Re: Datenbank-Backup über PHP-Skript
siehe Beispiel:
http://de2.php.net/system
			
			
									
						
										
						http://de2.php.net/system
- 
				mozzarella
 - Posts: 5
 - Joined: 2006-12-15 18:29
 
Re: Datenbank-Backup über PHP-Skript
Ok, jetzt bin ich schon soweit, dass er die Datenbank in eine Datei exportiert. Aber was muss ich tun, damit sich ein Fenster mit Aufforderung zum Speichern öffnet, wie es automatisch bei phpmyAdmin passiert oder auch, wenn man im Internet auf einen Link klickt, hinter dem ein zip-File liegt?
Klar ich kann die Datei auch mit FTP runtersaugen, aber so wär's noch schneller.
Dankeschön!
			
			
									
						
										
						Klar ich kann die Datei auch mit FTP runtersaugen, aber so wär's noch schneller.
Dankeschön!
Re: Datenbank-Backup über PHP-Skript
Um den Download automatisch zu starten, schau am besten unter der PHP-Funktion header() nach, mit Content-Type und Content-Disposition kannst du festlegen, was für einen Inhalt dein Document hat.Mozzarella wrote:Ok, jetzt bin ich schon soweit, dass er die Datenbank in eine Datei exportiert. Aber was muss ich tun, damit sich ein Fenster mit Aufforderung zum Speichern öffnet, wie es automatisch bei phpmyAdmin passiert oder auch, wenn man im Internet auf einen Link klickt, hinter dem ein zip-File liegt?
Klar ich kann die Datei auch mit FTP runtersaugen, aber so wär's noch schneller.
Dankeschön!
- 
				mozzarella
 - Posts: 5
 - Joined: 2006-12-15 18:29
 
Re: Datenbank-Backup über PHP-Skript
Ich habe es jetzt so gemacht:
Nun passiert etwas, das ich nicht verstehe: Wenn ich die erzeugte sql-Datei direkt auf dem Server öffne bzw. per FTP downloade, ist sie korrekt. Dieselbe Datei, wenn ich sie durch "readfile()" auf meinem Rechner speichere, enthält auch noch den kompletten Quellcode der Webseite, auf der ich gerade bin. 
Wie kann das denn sein?? 8O
Kann mir jemand sagen, wie ich das ändern kann?
Moz
			
			
									
						
										
						Code: Select all
<?php
// ...
elseif ($dbBefehl == "jetzt sichern") {
	$table = "videothek";
	
	$zeitPunkt = getdate();
	$tag = $zeitPunkt[mday];
	if ($tag < 10) $tag = "0$tag";
	$monat = $zeitPunkt[mon];
	if ($monat < 10) $monat = "0$monat";
	$jahr = substr($zeitPunkt[year],2,2);
	$stunde = $zeitPunkt[hours];
	if ($stunde < 10) $stunde = "0$stunde";
	$minute = $zeitPunkt[minutes];
	if ($minute < 10) $minute = "0$minute";
	
	system(sprintf('mysqldump -h%s -u%s -p%s %s %s > %s_%s%s%s_%sh%smin.sql', $host, $user, $pass, $database, $table, $table, $jahr, $monat, $tag, $stunde, $minute));
	$file = $table."_".$jahr.$monat.$tag."_".$stunde."h".$minute."min.sql";
	$dir = "./";
	$type = "application/sql";
	
	if(file_exists ($dir.$file)) {
		header("Content-Type: $type");
		header("Content-Disposition: attachment; filename="$file"");
		readfile($dir.$file);
	}
}
?>
<!-- Hier beginnt der HTML-Quellcode -->
Wie kann das denn sein?? 8O
Kann mir jemand sagen, wie ich das ändern kann?
Moz
- 
				Roger Wilco
 - Posts: 5923
 - Joined: 2004-05-23 12:53
 
Re: Datenbank-Backup über PHP-Skript
Verwende statt readfile() die Funktion fpassthru() und lies die das Beispiel unter http://de.php.net/manual/en/function.fpassthru.php durch.
			
			
									
						
										
						- 
				mozzarella
 - Posts: 5
 - Joined: 2006-12-15 18:29
 
Re: Datenbank-Backup über PHP-Skript
Danke, so klappt's!! [-o<