Beispiel #1
0
/**
 * 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);
    }
}
Beispiel #2
0
            } else {
                $messages[] = array('message' => $lang->get_value('LNG_ERROR_5001'), 'type' => 'error');
            }
        } else {
            $messages[] = array('message' => $lang->get_value('LNG_ERROR_5002'), 'type' => 'error');
        }
    } else {
        $messages[] = array('message' => $lang->get_value('LNG_ERROR_5003'), 'type' => 'error');
    }
} 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');