যখন দ্রুপাল ক্রোন টাস্কগুলি চালায়, এটি স্বয়ংক্রিয়ভাবে মডিউলগুলি থেকে নির্ধারিত কোনও ক্রোন সারি হ্যান্ডেল করে drupal_cron_run()
; প্রথমে hook_cron()
প্রয়োগগুলি শুরু করা হয় এবং তারপরে ক্রোন সারিগুলি খালি করা হয়।
অন্তর্নিহিত hook_cronapi()
, আপনি আপনার মডিউলটির ক্রোন সারি পরিচালনা করে অন্য কোনও ফাংশনের জন্য একটি এন্ট্রি যুক্ত করতে পারেন।
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);
}
}
}
বিকল্পটি হ'ল ড্রুপাল আপনার জন্য ক্রোন সারিটি পরিচালনা করতে দিচ্ছে, তবে ড্রুপাল ক্রোন কার্য সম্পাদন করার পরে তা ঘটে। আপনি যদি আপনার মডিউলের ক্রোন সারিটি আরও ঘন ঘন খালি করতে চান তবে আপনি কেবলমাত্র এলিসিয়া ক্রোন মডিউল দ্বারা পরিচালিত একটি নতুন ক্রোন টাস্ক যুক্ত করতে পারেন।
এলিসিয়া ক্রোন মডিউলটি ক্রোন সারিগুলি পরিচালনা করে elysia_cron_run()
; এই ফাংশন থেকে প্রার্থনা করা হচ্ছে elysia_cron_cron()
(এর একটি বাস্তবায়ন hook_cron()
), drush_elysia_cron_run_wrapper()
নিজস্ব থেকে (ক Drush কমান্ড কলব্যাক), এবং cron.php । যদি আপনি INSTALL.txt ফাইলের নির্দেশাবলী অনুসরণ করেন (বিশেষত "পদক্ষেপ বি: পরিবর্তিত সিস্টেম ক্রোনট্যাব (বিকল্প)") এবং HTTP: // উদাহরণের সাথে http://example.com/cron.php এর যে কোনও অনুরোধকে প্রতিস্থাপন করেছেন .কম / সাইটস / সমস্ত / মডিউল / ইলিশিয়া ক্রোন / ক্রোন.এফপি , ইলিশিয়া ক্রোন মডিউলটি ইতিমধ্যে ক্রোন সারিগুলি পরিচালনা করা উচিত। আমি প্রস্তাবিত কোডটি আপনার মডিউল থেকে ব্যবহৃত ক্রোন সারিগুলি পরিচালনা করার গতি বাড়ানোর জন্য ব্যবহার করা যেতে পারে, যদি কার্যকরভাবে এটি করার প্রয়োজন হয় তবে।
// 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();
}
}