so erstellen Sie eine backup-Datenbank script in php und zip it
was ist der beste Weg, um ein backup einer Datenbank mit Hilfe von php und sichern von Daten von mysql,ich habe versucht, sich für tutorials online, aber ich scheine nicht zu verstehen, gut gut, ich schrieb dies, obwohl seine arbeiten nicht schön,ich bin immer diese Fehler und Warnungen
Warning: gzopen(backups/adminpanel/adminpanel_aggrement_1367616442.sql.gz): failed to open stream: No such file or directory in C:\xampp\htdocs\how are things\admin panel\backup.php on line 17
Notice: Undefined variable: time in C:\xampp\htdocs\how are things\admin panel\backup.php on line 30
The file--backups/adminpanel/aggrement_.sql.gz--could not be opened for writing.
den code auf Zeile 17 und 30 ist dieser
if ($fp = gzopen ("$dir/{$db_name}_{$table}_{$bu_time}.sql.gz", 'w9')) {
echo "<p>The file--$dir/{$table}_{$time}.sql.gz--could not be opened for writing.</p>\n";
dies ist mein code
<?php
$db_name = 'adminpanel';
$dir = "backups/$db_name";
if (!file_exists('path/to/directory')) {
@mkdir('path/to/directory');
}
$bu_time = time();
$dbc = @mysqli_connect (localhost, root, nokiae71, adminpanel);
$q = 'SHOW TABLES';
$r = mysqli_query($dbc, $q);
if (mysqli_num_rows($r) > 0) {
echo "<p>Backing up database '$db_name'.</p>\n";
while (list($table) = mysqli_fetch_array($r, MYSQLI_NUM)) {
$q2 = "SELECT * FROM $table";
$r2 = mysqli_query($dbc, $q2);
if (mysqli_num_rows($r2) > 0) {
if ($fp = gzopen ("$dir/{$db_name}_{$table}_{$bu_time}.sql.gz", 'w9')) {
while ($row = mysqli_fetch_array($r2, MYSQLI_NUM)) {
foreach ($row as $value) {
gzwrite ($fp, "'$value', ");
}
gzwrite ($fp, "\n");
}
//Close the file:
gzclose ($fp);
} else { //Could not create the file!
echo "<p>The file--$dir/{$table}_{$time}.sql.gz--could not be opened for writing.</p>\n";
break;
}
}
}
} else {
echo "<p>The submitted database--$db_name--contains no tables.</p>\n";
}
?>
wie kann ich diese Arbeit machen oder gibt es eine bessere Skript, das ich verwenden kann, gibt...
- Versuchen Sie, diese eins
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun, diese Lösung verwendet cron, aber ich finde es sehr einfach, so dass ich dachte, es war der Rede Wert. Cron kann bereits auf dem server installiert sein, den Sie verwenden.
Dies ist der Befehl, dass ich einen Termin cron einmal pro Nacht:
Das ist es.
Dies sagt mysqldump dump Ihre gesamte Datenbank als sql. Dann gzip komprimiert. Und dann ist es gespeichert in einer Stelle auf Ihrem server, die mit dem Datum am Ende des Dateinamens.
Wenn Sie wirklich wollen, um es zu lösen mit php anstelle von cron-Sie könnten versuchen, den Aufruf mysqldump von php.
exec
Befehl. So wäre esexec('mysqldump -h URL_TO_YOUR_DATABASE.com -u YOUR_MYSQL_USERNAME -pYOUR_MYSQL_PASSWORD --single-transaction YOUR_DATABASE_NAME | gzip > ~/PATH_WHERE_YOU_WANT_TO_PLACE_BACKUPS/db_backup_$(date +%Y-%m-%d).sql.gz');
. Denken Sie daran, dass in Ihrer aktuellen Datenbank-Informationen, die an die Stelle der Wörter in ALL_CAPS. Und dies wird nur führen Sie es on-demand. Planen Sie benötigen Sie cron verwenden.