Advertisements

spawn_cron

Definition:
function spawn_cron( $local_time = 0 ) {}

Send request to run cron through HTTP request that doesn’t halt page loading.

Parameters

  • $local_time

Return values

returns:Cron could not be spawned, because it is not needed to run.

Defined filters

  • https_local_ssl_verify
    apply_filters('https_local_ssl_verify', true)

Source code

function spawn_cron( $local_time = 0 ) {



	if ( !$local_time )

		$local_time = time();



	if ( defined('DOING_CRON') || isset($_GET['doing_wp_cron']) )

		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

	*/

	$lock = get_transient('doing_cron');



	if ( $lock > $local_time + 10*60 )

		$lock = 0;



	// don't run if another process is currently running it or more than once every 60 sec.

	if ( $lock + WP_CRON_LOCK_TIMEOUT > $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;



		$doing_wp_cron = $local_time;

		set_transient( 'doing_cron', $doing_wp_cron );



		ob_start();

		wp_redirect( add_query_arg('doing_wp_cron', $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;

	}



	$doing_wp_cron = $local_time;

	set_transient( 'doing_cron', $doing_wp_cron );



	$cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron=' . $doing_wp_cron;

	wp_remote_post( $cron_url, array('timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters('https_local_ssl_verify', true)) );

}

2905

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: