You are here

function drupal_cron_run in Drupal 5

Same name and namespace in other branches
  1. 6 includes/common.inc \drupal_cron_run()
  2. 7 includes/common.inc \drupal_cron_run()

Executes a cron run when called

Return value

Returns TRUE if ran successfully

Related topics

2 calls to drupal_cron_run()
cron.php in ./cron.php
system_run_cron in modules/system/system.module
Menu callback: run cron manually.

File

includes/common.inc, line 2146
Common functions that many Drupal modules will need to reference.

Code

function drupal_cron_run() {

  // If not in 'safe mode', increase the maximum execution time:
  if (!ini_get('safe_mode')) {
    set_time_limit(240);
  }

  // Fetch the cron semaphore
  $semaphore = variable_get('cron_semaphore', FALSE);
  if ($semaphore) {
    if (time() - $semaphore > 3600) {

      // Either cron has been running for more than an hour or the semaphore
      // was not reset due to a database error.
      watchdog('cron', t('Cron has been running for more than an hour and is most likely stuck.'), WATCHDOG_ERROR);

      // Release cron semaphore
      variable_del('cron_semaphore');
    }
    else {

      // Cron is still running normally.
      watchdog('cron', t('Attempting to re-run cron while it is already running.'), WATCHDOG_WARNING);
    }
  }
  else {

    // Register shutdown callback
    register_shutdown_function('drupal_cron_cleanup');

    // Lock cron semaphore
    variable_set('cron_semaphore', time());

    // Iterate through the modules calling their cron handlers (if any):
    module_invoke_all('cron');

    // Record cron time
    variable_set('cron_last', time());
    watchdog('cron', t('Cron run completed.'), WATCHDOG_NOTICE);

    // Release cron semaphore
    variable_del('cron_semaphore');

    // Return TRUE so other functions can check if it did run successfully
    return TRUE;
  }
}