/** * Send request to run cron through HTTP request that doesn't halt page loading. * * @since 2.1.0 * * @return null Cron could not be spawned, because it is not needed to run. */ function spawn_cron($local_time) { /* * do not even start the cron if local server timer has drifted * such as due to power failure, or misconfiguration */ $timer_accurate = check_server_timer($local_time); if (!$timer_accurate) { return; } //sanity check $crons = _get_cron_array(); if (!is_array($crons)) { return; } $keys = array_keys($crons); $timestamp = $keys[0]; if ($timestamp > $local_time) { return; } $cron_url = get_option('siteurl') . '/wp-cron.php?check=' . wp_hash('187425'); /* * multiple processes on multiple web servers can run this code concurrently * try to make this as atomic as possible by setting doing_cron switch */ $flag = get_option('doing_cron'); // clean up potential invalid value resulted from various system chaos if ($flag != 0) { if ($flag > $local_time + 10 * 60 || $flag < $local_time - 10 * 60) { update_option('doing_cron', 0); $flag = 0; } } //don't run if another process is currently running it if ($flag > $local_time) { return; } update_option('doing_cron', $local_time + 30); wp_remote_post($cron_url, array('timeout' => 0.01, 'blocking' => false)); }
/** * Send request to run cron through HTTP request that doesn't halt page loading. * * @since 2.1.0 * * @return null Cron could not be spawned, because it is not needed to run. */ function spawn_cron($local_time = 0) { if (!$local_time) { $local_time = time(); } if (defined('DOING_CRON') || isset($_GET['doing_wp_cron'])) { return; } /* * do not even start the cron if local server timer has drifted * such as due to power failure, or misconfiguration */ $timer_accurate = check_server_timer($local_time); if (!$timer_accurate) { return; } /* * multiple processes on multiple web servers can run this code concurrently * try to make this as atomic as possible by setting doing_cron switch */ $flag = get_transient('doing_cron'); if ($flag > $local_time + 10 * 60) { $flag = 0; } // don't run if another process is currently running it or more than once every 60 sec. if ($flag + 60 > $local_time) { return; } //sanity check $crons = _get_cron_array(); if (!is_array($crons)) { return; } $keys = array_keys($crons); if (isset($keys[0]) && $keys[0] > $local_time) { return; } if (defined('ALTERNATE_WP_CRON') && ALTERNATE_WP_CRON) { if (!empty($_POST) || defined('DOING_AJAX')) { return; } set_transient('doing_cron', $local_time); ob_start(); wp_redirect(add_query_arg('doing_wp_cron', '', stripslashes($_SERVER['REQUEST_URI']))); echo ' '; // flush any buffers and send the headers while (@ob_end_flush()) { } flush(); WP_DEBUG ? include_once ABSPATH . 'wp-cron.php' : @(include_once ABSPATH . 'wp-cron.php'); return; } set_transient('doing_cron', $local_time); $cron_url = get_option('siteurl') . '/wp-cron.php?doing_wp_cron'; wp_remote_post($cron_url, array('timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters('https_local_ssl_verify', true))); }