/** * Create database backup (cron task function). * * @param vivvo_lite_site $sm */ function auto_backup($sm) { include_once VIVVO_FS_INSTALL_ROOT . 'lib/backup/mysql_backup.php'; $folder_name = VIVVO_FS_ROOT . 'backup/'; $file_name = $folder_name . 'backup_details.csv'; $max_rows = 5000; $total_rows = 0; $log = ''; $backup_obj = new BackupMySQL(); $basename = $backup_obj->database . date('-Ymd-Hi-') . md5(uniqid(VIVVO_URL, true)) . '.sql'; $filename = $folder_name . $basename; $table_details = $backup_obj->GetTables($backup_obj->database); @unlink($filename . 'gz'); $table_count = count($table_details); for ($count = 0; $count < $table_count; $count++) { list($table_name, $row_count) = explode(':', $table_details[$count]); $start = 0; while ($start < $row_count && $row_count != 0) { $end = $start + $max_rows; $str = $table_name . ':' . $row_count . "\r\n"; $file_contents[$count] = $str; if ($backup_obj->Execute($filename, $backup_obj->database, $table_name, $start, 5000, $row_count) == false) { $e = $backup_obj->error; $log .= 'Auto Backup Error - Table: ' . $table_name . ', details: ' . $e . "\n"; break; } else { $total_rows += $end; $fp = fopen($file_name, 'w'); $fc = count($file_contents); for ($counter = 0; $counter < $fc; $counter++) { fwrite($fp, $file_contents[$counter]); } fclose($fp); } //if ($total_rows >= $max_rows) break; $start += $max_rows; } } unset($count, $table_count, $table_name, $row_count, $start, $file_contents, $max_rows, $total_rows, $str, $backup_obj, $fp, $fc, $counter); if (gzcompressfile($filename, 9) === false) { $log .= 'Backup file created but cannot be gzipped.'; } else { $log .= 'Backup created and successfully gzipped.'; @unlink($filename); } if (defined('VIVVO_CRONJOB_MODE')) { echo 'auto_backup: ' . $log . PHP_EOL; } else { admin_log('(Cron task: Auto Backup)', $log); } }
} elseif (isset($_REQUEST['backup'])) { $action = 'backup'; $restart = empty($_GET['restart']) ? 0 : (int) $_GET['restart']; $file_name = VIVVO_FS_ROOT . 'backup/backup_details.csv'; $max_rows = VIVVO_MAINTENANCE_BACKUP_MAX_ROWS_PER_RUN; $folder_name = VIVVO_FS_ROOT . 'backup/'; $backup_obj = new BackupMySQL(); if (!isset($_GET['f'])) { $basename = $backup_obj->database . date('-Ymd-Hi-') . md5(uniqid(VIVVO_URL, true)) . '.sql'; } else { $basename = $_GET['f']; } $filename = $folder_name . $basename; if ($restart != -1) { if ($restart == 1) { $table_details = $backup_obj->GetTables($database); $fp = fopen($file_name, 'w'); for ($count = 0; $count < count($table_details); $count++) { fwrite($fp, $table_details[$count] . ":0\r\n"); } fclose($fp); $fp = fopen($filename, 'w'); fclose($fp); @unlink($filename . "gz"); } $file_contents = file($file_name); $total_rows = 0; $table_count = count($file_contents); for ($count = 0; $count < $table_count; $count++) { list($table_name, $row_count, $start) = explode(':', str_replace("\r", "", str_replace("\n", "", $file_contents[$count]))); if ($start < $row_count || $row_count == 0) {