From 68b74ef3b92bdc1ccf67a054fb1438f29825705a Mon Sep 17 00:00:00 2001 From: ryan Date: Tue, 21 Nov 2006 02:48:12 +0000 Subject: [PATCH] Attempt at eliminating cron contention. git-svn-id: http://svn.automattic.com/wordpress/trunk@4509 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-cron.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/wp-cron.php b/wp-cron.php index 45cb9f32fb..36d7662e3e 100644 --- a/wp-cron.php +++ b/wp-cron.php @@ -6,6 +6,11 @@ require_once('wp-config.php'); if ( $_GET['check'] != md5(DB_PASS . '187425') ) exit; +if ( get_option('doing_cron') > time() ) + exit; + +update_option('doing_cron', time() + 30); + $crons = _get_cron_array(); $keys = array_keys($crons); if (!is_array($crons) || $keys[0] > time()) @@ -14,14 +19,17 @@ foreach ($crons as $timestamp => $cronhooks) { if ($timestamp > time()) break; foreach ($cronhooks as $hook => $keys) { foreach ($keys as $key => $args) { - do_action_ref_array($hook, $args['args']); $schedule = $args['schedule']; if ($schedule != false) { $new_args = array($timestamp, $schedule, $hook, $args['args']); call_user_func_array('wp_reschedule_event', $new_args); } wp_unschedule_event($timestamp, $hook, $args['args']); + do_action_ref_array($hook, $args['args']); } } } + +update_option('doing_cron', 0); + ?>