You are here

function job_scheduler_cron in Job Scheduler 8.2

Same name and namespace in other branches
  1. 8.3 job_scheduler.module \job_scheduler_cron()
  2. 6 job_scheduler.module \job_scheduler_cron()
  3. 7.2 job_scheduler.module \job_scheduler_cron()
  4. 7 job_scheduler.module \job_scheduler_cron()

Implements hook_cron().

File

./job_scheduler.module, line 63
Job scheduler module.

Code

function job_scheduler_cron() {
  try {
    $scheduler = \Drupal::service('job_scheduler.manager');

    // Reschedule all jobs if requested.
    $config = \Drupal::service('config.factory')
      ->getEditable('job_scheduler.settings');
    if ($config
      ->get('rebuild_all')) {
      $scheduler
        ->rebuildAll();
      $config
        ->set('rebuild_all', FALSE)
        ->save();

      // TODO: Remove?
      return;
    }
    $results = $scheduler
      ->perform();

    // If any jobs were processed, log how much time we spent processing.
    if ($results['total'] || $results['failed']) {
      $date_formatter = \Drupal::service('date.formatter');
      $logger = \Drupal::logger('job_scheduler');
      $logger
        ->info(t('Finished processing scheduled jobs (:time, :total total, :failed failed).', [
        ':time' => $date_formatter
          ->formatInterval(time() - $results['start']),
        ':total' => $results['total'],
        ':failed' => $results['failed'],
      ]));
    }
  } catch (Exception $e) {
    watchdog_exception('job_scheduler', $e);
  }
}