You are here

function backup_migrate_source_db_mysql::_backup_db_to_file in Backup and Migrate 6.3

Same name and namespace in other branches
  1. 8.3 includes/sources.db.mysql.inc \backup_migrate_source_db_mysql::_backup_db_to_file()
  2. 7.3 includes/sources.db.mysql.inc \backup_migrate_source_db_mysql::_backup_db_to_file()

Backup the databases to a file.

Returns a list of sql commands, one command per line. That makes it easier to import without loading the whole file into memory. The files are a little harder to read, but human-readability is not a priority

Overrides backup_migrate_source_db::_backup_db_to_file

File

includes/sources.db.mysql.inc, line 92
Functions to handle the direct to database source.

Class

backup_migrate_source_db_mysql
A source type for backing up from database server.

Code

function _backup_db_to_file($file, $settings) {
  if (!empty($settings->filters['use_cli']) && $this
    ->_backup_db_to_file_mysqldump($file, $settings)) {
    return TRUE;
  }
  $lines = 0;
  $exclude = !empty($settings->filters['exclude_tables']) ? $settings->filters['exclude_tables'] : array();
  $nodata = !empty($settings->filters['nodata_tables']) ? $settings->filters['nodata_tables'] : array();
  if ($file
    ->open(TRUE)) {
    $file
      ->write($this
      ->_get_sql_file_header());
    $alltables = $this
      ->_get_tables();
    foreach ($alltables as $table) {
      if (_backup_migrate_check_timeout()) {
        return FALSE;
      }
      if ($table['Name'] && !isset($exclude[$table['Name']])) {
        $file
          ->write($this
          ->_get_table_structure_sql($table));
        $lines++;
        if (!in_array($table['Name'], $nodata)) {
          $lines += $this
            ->_dump_table_data_sql_to_file($file, $table);
        }
      }
    }
    $file
      ->write($this
      ->_get_sql_file_footer());
    $file
      ->close();
    return $lines;
  }
  else {
    return FALSE;
  }
}