function dblog_cron

Same name in other branches
  1. 9 core/modules/dblog/dblog.module \dblog_cron()
  2. 8.9.x core/modules/dblog/dblog.module \dblog_cron()
  3. 10 core/modules/dblog/dblog.module \dblog_cron()

Implements hook_cron().

Controls the size of the log table, paring it to 'dblog_row_limit' messages.

File

modules/dblog/dblog.module, line 101

Code

function dblog_cron() {
    // Cleanup the watchdog table.
    $row_limit = variable_get('dblog_row_limit', 1000);
    // For row limit n, get the wid of the nth row in descending wid order.
    // Counting the most recent n rows avoids issues with wid number sequences,
    // e.g. auto_increment value > 1 or rows deleted directly from the table.
    if ($row_limit > 0) {
        $min_row = db_select('watchdog', 'w')->fields('w', array(
            'wid',
        ))
            ->orderBy('wid', 'DESC')
            ->range($row_limit - 1, 1)
            ->execute()
            ->fetchField();
        // Delete all table entries older than the nth row, if nth row was found.
        if ($min_row) {
            db_delete('watchdog')->condition('wid', $min_row, '<')
                ->execute();
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.