You are here

public function UltimateCronBackgroundProcessLegacyLauncher::launch in Ultimate Cron 7.2

Background Process launch.

Overrides UltimateCronLauncher::launch

File

plugins/ultimate_cron/launcher/background_process_legacy.class.php, line 377
Background Process 1.x launcher for Ultimate Cron.

Class

UltimateCronBackgroundProcessLegacyLauncher
Ultimate Cron launcher plugin class.

Code

public function launch($job) {
  $lock_id = $job
    ->lock();
  if (!$lock_id) {
    return FALSE;
  }
  $settings = $job
    ->getSettings($this->type);
  $handle = 'uc-' . $job->name;
  $process = new BackgroundProcess($handle);
  $this->exec_status = $this->status = BACKGROUND_PROCESS_STATUS_LOCKED;

  // Always run cron job as anonymous user.
  $process->uid = 0;
  $process->service_group = $settings['service_group'];
  $service_host = $process
    ->determineServiceHost();
  if ($this->scheduledLaunch) {
    $init_message = t('Launched at service host @name', array(
      '@name' => $service_host,
    ));
  }
  else {
    $init_message = t('Launched manually at service host @name', array(
      '@name' => $service_host,
    ));
  }

  // We know that the latest log entry has been used for determining the
  // schedule. Load the latest log entry and store the timestamp of it for
  // later use.
  if (!empty($job->recheck)) {
    $log_entry = isset($job->log_entry) ? $job->log_entry : $job
      ->loadLatestLogEntry();
    $recheck = $log_entry->start_time;
  }
  else {
    $recheck = FALSE;
  }
  $log_entry = $job
    ->startLog($lock_id, $init_message);
  if (!$process
    ->execute(array(
    get_class($this),
    'job_callback',
  ), array(
    $job->name,
    $lock_id,
    $recheck,
  ))) {
    watchdog('bgpl_launcher', 'Could not execute background process dispatch for handle @handle', array(
      '@handle' => $handle,
    ), WATCHDOG_ERROR);
    $log_entry
      ->finish();
    $this
      ->unlock($lock_id);
    return FALSE;
  }

  // We want to finish the log in the sub-request.
  $log_entry
    ->unCatchMessages();
  drupal_set_message(t('@name: @init_message', array(
    '@name' => $job->name,
    '@init_message' => $init_message,
  )));
  return TRUE;
}