function drupal_cron_run in Drupal 6
Same name and namespace in other branches
- 5 includes/common.inc \drupal_cron_run()
- 7 includes/common.inc \drupal_cron_run()
Executes a cron run when called
Return value
Returns TRUE if ran successfully
2 calls to drupal_cron_run()
- cron.php in ./cron.php 
- system_run_cron in modules/system/ system.admin.inc 
- Menu callback: run cron manually.
File
- includes/common.inc, line 2797 
- Common functions that many Drupal modules will need to reference.
Code
function drupal_cron_run() {
  // Try to allocate enough time to run all the hook_cron implementations.
  if (function_exists('set_time_limit')) {
    @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', 'Cron has been running for more than an hour and is most likely stuck.', array(), WATCHDOG_ERROR);
      // Release cron semaphore
      variable_del('cron_semaphore');
    }
    else {
      // Cron is still running normally.
      watchdog('cron', 'Attempting to re-run cron while it is already running.', array(), 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', 'Cron run completed.', array(), WATCHDOG_NOTICE);
    // Release cron semaphore
    variable_del('cron_semaphore');
    // Return TRUE so other functions can check if it did run successfully
    return TRUE;
  }
}