WordPress.org

Make WordPress Core

Opened 4 years ago

Last modified 4 years ago

#18100 closed defect (bug)

Cron Loop does not work — at Initial Version

Reported by: luis.ferro Owned by:
Milestone: Priority: normal
Severity: blocker Version: 3.2
Component: Cron API Keywords: has-patch
Focuses: Cc:

Description

The cron loop existing on cron.php in the wp-includes does not work.

The wp_cron() shows code that doesn't re-lists recurring events and does not fire any event. There is no other code firing those events.

This code is calling for a "callback" array element that is not set on the scheduler array.

After checking wp-cron.php, and adapting the code from that to wp_cron(), now everything works as it should.

Changed function looks like:

/

  • Run scheduled callbacks or spawn cron for all scheduled events. Adapted from wp-cron.php *
  • @since 2.1.0 *
  • @return null When doesn't need to run Cron. */

function wp_cron()
{

Prevent infinite loops caused by lack of wp-cron.php

if (strpos($_SERVERREQUEST_URI?, '/wp-cron.php') !== false
(defined('DISABLE_WP_CRON') && DISABLE_WP_CRON))

return;

if (false === $crons = _get_cron_array())

return;

$local_time = time();
$keys = array_keys($crons);

if (isset($keys[0]) && $keys[0] > $local_time)

return;

foreach ($crons as $timestamp => $cronhooks) {

if ($timestamp > $local_time)

break;

foreach ( (array)$cronhooks as $hook => $keys) {

foreach ($keys as $k => $v) {

$schedule = $vschedule?;

if ($schedule != false) {

$new_args = array($timestamp, $schedule, $hook, $vargs?);
call_user_func_array('wp_reschedule_event', $new_args);

}

wp_unschedule_event($timestamp, $hook, $vargs?);

do_action_ref_array($hook, $vargs?);

}

}

}

}

Cheers,

Change History (0)

Note: See TracTickets for help on using tickets.