function backup_migrate_perform_backup in Backup and Migrate 7.3
Same name and namespace in other branches
- 8.4 backup_migrate.module \backup_migrate_perform_backup()
- 8.2 backup_migrate.module \backup_migrate_perform_backup()
- 8.3 backup_migrate.module \backup_migrate_perform_backup()
- 5.2 backup_migrate.module \backup_migrate_perform_backup()
- 6.3 backup_migrate.module \backup_migrate_perform_backup()
- 6.2 backup_migrate.module \backup_migrate_perform_backup()
- 7.2 backup_migrate.module \backup_migrate_perform_backup()
- 5.0.x backup_migrate.module \backup_migrate_perform_backup()
Perform a backup with the given settings.
4 calls to backup_migrate_perform_backup()
- backup_migrate_drush_backup in includes/
backup_migrate.drush.inc - Backup the default database.
- backup_migrate_schedule::run in includes/
schedules.inc - Run the actual schedule.
- backup_migrate_ui_manual_backup_perform in ./
backup_migrate.module - Perform an actual manual backup and tell the user of the progress.
- _backup_migrate_backup_with_defaults in ./
backup_migrate.module - Backup the database with the default settings.
File
- ./
backup_migrate.module, line 1584 - Backup and restore databases for Drupal.
Code
function backup_migrate_perform_backup(&$settings) {
require_once dirname(__FILE__) . '/includes/destinations.inc';
require_once dirname(__FILE__) . '/includes/files.inc';
require_once dirname(__FILE__) . '/includes/filters.inc';
timer_start('backup_migrate_backup');
_backup_migrate_set_timeout();
// Conditionally increase the memory limit.
// Get the current php memory limit.
$php_memory_limit = ini_get('memory_limit');
// If the memory limit is set to -1, there's no need to do anything.
if ($php_memory_limit !== -1) {
// Convert the php memory limit to bytes.
$php_memory_limit_bytes = backup_migrate_to_bytes($php_memory_limit);
// Get the current Backup Migrate memory limit.
// Hint: To further increase the memory limit used by Backup Migrate add one
// of the following line to the settings.php file:
// * $conf['backup_migrate_memory_limit'] = '512M';
// * $conf['backup_migrate_memory_limit'] = '1G';.
$backup_migrate_memory_limit = variable_get('backup_migrate_memory_limit', BACKUP_MIGRATE_MEMORY_LIMIT);
// Convert the Backup Migrate memory limit to bytes.
$backup_migrate_memory_limit_bytes = backup_migrate_to_bytes($backup_migrate_memory_limit);
// If not in 'safe mode', increase the memory limit.
if (!ini_get('safe_mode') && $php_memory_limit_bytes < $backup_migrate_memory_limit_bytes) {
// Ensure ini_set() is not disabled.
if (!strpos(ini_get('disable_functions'), 'ini_set')) {
// Convert bytes to megabytes, add the 'M' unit.
$backup_migrate_memory_limit = round($backup_migrate_memory_limit_bytes / 1024 / 1024) . 'M';
// Update the php memory limit.
ini_set('memory_limit', $backup_migrate_memory_limit);
}
}
}
if (variable_get('backup_migrate_verbose')) {
_backup_migrate_message("Memory limit: %limit", array(
'%limit' => ini_get('memory_limit'),
), 'success');
}
// Confirm the destinations are valid.
$valid = backup_migrate_destination_confirm_destination($settings);
if (!$valid) {
backup_migrate_backup_fail("Could not run backup because a there was no valid destination to save to.", array(), $settings);
return FALSE;
}
// Create the temporary file object to be backed up into.
$filename = _backup_migrate_construct_filename($settings);
$file = new backup_file(array(
'filename' => $filename,
));
if (!$file) {
backup_migrate_backup_fail("Could not run backup because a temporary file could not be created.", array(), $settings);
return FALSE;
}
// Register shutdown callback to deal with timeouts.
register_shutdown_function('backup_migrate_shutdown', $settings);
if (variable_get('backup_migrate_verbose')) {
watchdog('backup_migrate', "Starting backup: %file", array(
'%file' => $file
->filename(),
));
}
$file = backup_migrate_filters_backup($file, $settings);
if (!$file) {
if (_backup_migrate_check_timeout()) {
backup_migrate_backup_fail('Could not complete the backup because the script timed out. Try increasing your PHP <a href="!url">max_execution_time setting</a>.', array(
'!url' => 'http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time',
), $settings);
}
else {
backup_migrate_backup_fail("Could not complete the backup.", array(), $settings);
}
return FALSE;
}
if (variable_get('backup_migrate_verbose')) {
watchdog('backup_migrate', "Preparing to save backup: %file", array(
'%file' => $file
->filename(),
));
}
$file = backup_migrate_destination_save_file($file, $settings);
if (!$file) {
backup_migrate_backup_fail("Could not run backup because the file could not be saved to the destination.", array(), $settings);
return FALSE;
}
if (variable_get('backup_migrate_verbose')) {
watchdog('backup_migrate', "Backup succeeded: %file", array(
'%file' => $file
->filename(),
));
}
// Backup succeeded.
$time = timer_stop('backup_migrate_backup');
$message = '%source backed up successfully to %file (%size) in destination %dest in !time. !action';
$params = array(
'%file' => $filename,
'%dest' => $settings
->get_destination_name(),
'%source' => $settings
->get_source_name(),
'%size' => format_size($file
->filesize()),
'!time' => backup_migrate_format_elapsed_time($time['time']),
'!action' => !empty($settings->performed_action) ? $settings->performed_action : '',
);
if (($destination = $settings
->get_destination()) && ($links = $destination
->get_file_links($file
->file_id()))) {
$params['!links'] = implode(", ", $links);
}
backup_migrate_backup_succeed($message, $params, $settings);
return $file;
}