You are here

public static function DbHandler::optimizeTables in DB Maintenance 7.2

Same name and namespace in other branches
  1. 8 src/Module/Db/DbHandler.php \Drupal\db_maintenance\Module\Db\DbHandler::optimizeTables()
  2. 2.0.x src/Module/Db/DbHandler.php \Drupal\db_maintenance\Module\Db\DbHandler::optimizeTables()

Performs the maintenance.

2 calls to DbHandler::optimizeTables()
CommonHookHandler::hookCron in src/Module/Hook/CommonHookHandler.php
Implements hook_cron().
db_maintenance_optimize_tables_page in ./db_maintenance.module
Callback page for manually optimizing tables.

File

src/Module/Db/DbHandler.php, line 22
DbHandler class.

Class

DbHandler
DbHandler class.

Namespace

Drupal\db_maintenance\Module\Db

Code

public static function optimizeTables() {
  global $databases;
  foreach ($databases as $db => $connection) {
    $db_name = $connection['default']['database'];
    $all_tables = ConfigHandler::getProcessAllTables();
    if ($all_tables) {
      $config_tables = self::listTables($db);
    }
    else {
      $config_tables = ConfigHandler::getTableList($db_name);
    }

    // Only proceed if tables are selected for this database.
    if (is_array($config_tables) && count($config_tables) > 0) {
      foreach ($config_tables as $key => $table_name) {

        // Set the database to query.
        $previous = db_set_active($db);
        $table_clear = PrefixHandler::clearPrefix($table_name);
        if (db_table_exists($table_clear)) {
          $handler = DbServerHandlerFactory::getDbServerHandler();
          $handler
            ->optimizeTable($table_clear);
        }
        else {
          watchdog('db_maintenance', '@table table in @db database was configured to be optimized but does not exist.', array(
            '@db' => $db_name,
            '@table' => $table_name,
          ), WATCHDOG_NOTICE);
        }

        // Return to the previously set database.
        db_set_active($previous);
        watchdog('db_maintenance', 'Optimized @table table in @db database.', array(
          '@db' => $db_name,
          '@table' => $table_name,
        ), WATCHDOG_DEBUG);
      }
      if (ConfigHandler::getWriteLog()) {
        $tables = implode(', ', $config_tables);
        watchdog('db_maintenance', 'Optimized tables in @db database: @tables', array(
          '@db' => $db_name,
          '@tables' => $tables,
        ), WATCHDOG_INFO);
      }
    }
  }
  variable_set('db_maintenance_cron_last', REQUEST_TIME);
}