/** * 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); } }
@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) { if ($start + $max_rows > $row_count) { $end = $row_count - $start; } else { $end = $max_rows; } $str = $table_name . ":" . $row_count . ":" . ($start + $end) . "\r\n"; $file_contents[$count] = $str; if (!$backup_obj->Execute($filename, $database, $table_name, $start, $end, $row_count)) { $messages[] = array('message' => $lang->get_value('LNG_ADMIN_ERROR_BACKING_UP_TABLE') . $table_name . '. ' . $lang->get_value('LNG_ADMIN_DETAILS') . ' : ' . $backup_obj->error, 'type' => 'action', 'result' => 'failed'); } else { $total_rows += $end; if ($end != 0) { $messages[] = array('message' => $lang->get_value('LNG_ADMIN_ROWS') . ' ' . $start . '-' . ($start + $end - 1) . ' ' . $lang->get_value('LNG_ADMIN_OF_TABLE') . ' ' . $table_name . ' ' . $lang->get_value('LNG_ADMIN_WERE_SUCCESSFULY_BACKED_UP'), 'type' => 'action', 'result' => 'success'); } else { $messages[] = array('message' => $lang->get_value('LNG_ADMIN_ROWS') . ' 0-0 ' . $lang->get_value('LNG_ADMIN_OF_TABLE') . ' ' . $table_name . ' ' . $lang->get_value('LNG_ADMIN_WERE_SUCCESSFULY_BACKED_UP'), 'type' => 'action', 'result' => 'success'); } $fp = fopen($file_name, 'w'); for ($counter = 0; $counter < count($file_contents); $counter++) { fwrite($fp, $file_contents[$counter]); if ($total_rows >= $max_rows) { $messages[] = array('message' => $file_contents[$counter], 'type' => 'info'); } }