как создать резервную копию базы данных в php и zip it

что является лучшим способом резервного копирования базы данных с использованием php и поддержки данных из mysql, я попытался найти учебники в Интернете, но я, кажется, не очень хорошо понимаю, я написал это, хотя он не работает красиво, я получаю эти ошибки и предупреждения

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. 

код в строке 17 и 30 – это

 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"; 

это мой код

 <?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"; } ?> 

как я могу сделать эту работу или есть лучший сценарий, который я могу использовать там …

Solutions Collecting From Web of "как создать резервную копию базы данных в php и zip it"

Теперь это решение использует cron , но я нахожу его очень легким, поэтому я подумал, что это стоит упомянуть. Cron уже может быть установлен на сервере, который вы используете.

Это команда, по которой я планирую запуск cron один раз в сутки:

 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 

Вот и все.

Это говорит mysqldump, чтобы выгрузить всю вашу базу данных в виде sql. Затем gzip сжимает его. И затем он хранится в месте на вашем сервере с датой, присоединенной к концу имени файла.

Если вы действительно хотите вызвать его с помощью php вместо cron, вы можете попробовать вызвать mysqldump из php .