Drupalがcronタスクを実行すると、モジュールから定義されたcronキューが自動的に処理されます。 drupal_cron_run()ます; 最初のhook_cron()実装が呼び出され、次にcronキューが空になります。
実装する hook_cronapi()、モジュールのcronキューを処理する別の関数のエントリを追加できます。
function mymodule_cronapi($op, $job = NULL) {
  $items = array();
  $items['queue_users_for_synch'] = array(
    'description' => 'Queue all user accounts for synching.',
    'rule' => '0 3 * * *', // Run this job every day at 3am.
    'callback' => 'mymodule_queue_all_users_for_synching',
  );
  $items['clean_queue'] = array(
    'description' => 'Clean the queue for the user synching.',
    'rule' => '0 4 * * *', // Run this job every day at 4 AM.
    'callback' => 'mymodule_clean_queue',
  );
  return $items;
}
function mymodule_clean_queue() {
  $queues = module_invoke('mymodule', 'cron_queue_info');
  drupal_alter('cron_queue_info', $queues);
  // Make sure every queue exists. There is no harm in trying to recreate an
  // existing queue.
  foreach ($queues as $queue_name => $info) {
    DrupalQueue::get($queue_name)->createQueue();
  }
  foreach ($queues as $queue_name => $info) {
    $function = $info['worker callback'];
    $end = time() + (isset($info['time']) ? $info['time'] : 15);
    $queue = DrupalQueue::get($queue_name);
    while (time() < $end && ($item = $queue->claimItem())) {
      $function($item->data);
      $queue->deleteItem($item);
    }
  }
}
別の方法は、Drupalにcronキューを処理させることですが、これはDrupal cronタスクが実行されるときに起こります。モジュールのcronキューをより頻繁に空にする場合は、Elysia Cronモジュールによって処理される新しいcronタスクのみを追加できます。
Elysia Cronモジュールはcronキューを処理しますelysia_cron_run(); この関数は、elysia_cron_cron()(の実装hook_cron())、drush_elysia_cron_run_wrapper()(Drushコマンドコールバック)、および独自のcron.phpから呼び出されています。あなたはの指示に従っていればいるinstall.txtファイル(に特にを「STEPのB:CHANGE SYSTEM CRONTAB(オプション)」)、および任意の呼び出しに置き換えhttp://example.com/cron.phpをします。http://例.com / sites / all / modules / elysia_cron / cron.php、Elysia Cronモジュールはすでにcronキューを処理しているはずです。私が提案したコードは、モジュールから使用されるcronキューの処理を高速化するために使用できます(そうする必要がある場合)。
// This code is part of the code executed from modules/elysia_cron/cron.php.
define('DRUPAL_ROOT', getcwd());
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_override_server_variables(array(
  'SCRIPT_NAME' => '/cron.php',
));
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
if (!isset($_GET['cron_key']) || variable_get('cron_key', 'drupal') != $_GET['cron_key']) {
  watchdog('cron', 'Cron could not run because an invalid key was used.', array(), WATCHDOG_NOTICE);
  drupal_access_denied();
}
elseif (variable_get('maintenance_mode', 0)) {
  watchdog('cron', 'Cron could not run because the site is in maintenance mode.', array(), WATCHDOG_NOTICE);
  drupal_access_denied();
}
else {
  if (function_exists('elysia_cron_run')) {
    elysia_cron_run();
  }
  else {
    drupal_cron_run();
  }
}