| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

12-06-2005, 17:30
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
Datenban Backup per PHP
Hallo zusammen,
ich möchte mit Hilfe eines PHP Skriptes welches ich als Cron ausführen möchte meine Datenbank täglich backuppen und in einer Textdatei speichern, wenn möglich gezippt.
Ich bekomms aber irgendwie nicht hin.
Ich habe schon folgendes probiert:
<?php
// Bitte hier Ihre Daten eintragen
$host= 'xxxxxxx';
$user= 'dbxxxxxx';
$pass= 'xxxxxxxx';
$db= 'dbxxxxxxx';
// Befehl ausführen und in Zipfile speichern
system(sprintf(
'mysqldump --opt -h%s -u%s -p%s %s | gzip > %s/dumpDB.sql.gz',
$host,
$user,
$pass,
$db,
getenv('DOCUMENT_ROOT')
));
echo '+DONE';
?>
außerdem war ich schon auf mysqldumper.de aber es geht einfach nicht.
Kann mir jemand hier ein wenig Hilfestellung geben ?
Danke
Trashoverwrite
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|

12-06-2005, 17:32
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
deine ansätze? fehlermeldungen? sonstiges?
|

12-06-2005, 17:32
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
1. bitte editieren und php tags verwenden, damit man's besser lesen kann.
2. was hat denn an deinen versuchen nicht geklappt?
|

12-06-2005, 17:57
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
Bei den folgenden Code kam keine Fehlermeldung, done wurde ausgegeben aber keien Datei gespeichert.
PHP-Code:
<?php
// Bitte hier Ihre Daten eintragen
$host= 'xxxxxxx';
$user= 'dbxxxxxx';
$pass= 'xxxxxxxx';
$db= 'dbxxxxxxx';
// Befehl ausführen und in Zipfile speichern
system(sprintf(
'mysqldump --opt -h%s -u%s -p%s %s | gzip > %s/dumpDB.sql.gz',
$host,
$user,
$pass,
$db,
getenv('DOCUMENT_ROOT')
));
echo '+DONE';
?>
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|

12-06-2005, 17:59
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
Die DB ist auch nciht so groß, dass es einen Timeout geben könnte nur zur Info
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|

12-06-2005, 18:05
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
du hast nichtmal überprüft, was system zurückgibt. what about debugging?
|

12-06-2005, 19:17
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
Hätte ich gern aber ich bekomme keine Ausgabe !!
Deshalb frag ich ja hier unter anderem nach !
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|

12-06-2005, 19:39
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
1. Was heißt hätte? Hast du mal
PHP-Code:
echo system('befehl');
gemacht? Und da kam nix? Hast du dann mal befehl direkt auf der Konsole ausprobiert? Da sieht man nämlich neben stdout im Normalfall auch stderr.
Wenns nicht klappt gleich mal ein "whereis mysqldump' hinterher ...
2. Warum eigentlich mit sprintf()?
PHP-Code:
echo system("befehl $var1 ...");
würde sprintf() als Fehlerquelle ausschließen.
3. 'mysqldump -h<Leerzeichen>$host ...'
|

12-06-2005, 20:48
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
mysql dump befindet sich hier
/usr/bin/mysqldump
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|

12-06-2005, 20:49
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
wie mach ich das mit dem system direkt ausgeben ?
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|

12-06-2005, 20:59
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Zitat:
Original geschrieben von trashoverwrite
wie mach ich das mit dem system direkt ausgeben ?
|
Ich versteh die Frage nicht! Weißt du nicht was ich mit "Konsole" meine? Eine Shell, ggf. über SSH. Alles böhmische Dörfer? Wie hast du denn dann herausbekommen, wo mysqldump liegt?
|

12-06-2005, 21:09
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
doch ic hweiß dass du shell meinst aber welchen Befehl soll ich da eingeben ??
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|

12-06-2005, 21:10
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
Was vor allem ist an meinem Skript falsch ??
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|

12-06-2005, 21:23
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Du sollst den Befehl in einer Shell testen, den du system() übergibst. Dann wirst du wahrscheinlich auch sehen, was an deinem Script falsch ist - nämlich zumindest der Befehl. Zwischen den Optionen (-h, -u, -p) und deren Werten ($host, $user, $pass bzw. %s) fehlen Leerzeichen.
Der Unterschied zwischen dem Aufruf von system() und dem Testen in einer Shell ist, dass du in der Shell normalerweise auch stderr (Fehlermeldungen) zu sehen bekommst und bei 'echo system();' vielleicht nur stdout (Ausgabe).
Geändert von onemorenerd (12-06-2005 um 21:25 Uhr)
|

12-06-2005, 21:55
|
|
trashoverwrite
Newbie
|
|
Registriert seit: May 2004
Beiträge: 120
|
|
Also das Skript benutzen einige andere auch und da funktioniert es wohl, ich hab wohl ein anderes Problem
__________________
-------
Jetzt Wissen testen
mit dem Tagesquiz
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|