web/wp-cron.php
changeset 136 bde1974c263b
child 194 32102edaa81b
equal deleted inserted replaced
135:53cff4b4a802 136:bde1974c263b
       
     1 <?php
       
     2 /**
       
     3  * WordPress Cron Implementation for hosts, which do not offer CRON or for which
       
     4  * the user has not setup a CRON job pointing to this file.
       
     5  *
       
     6  * The HTTP request to this file will not slow down the visitor who happens to
       
     7  * visit when the cron job is needed to run.
       
     8  *
       
     9  * @package WordPress
       
    10  */
       
    11 
       
    12 ignore_user_abort(true);
       
    13 
       
    14 if ( !empty($_POST) || defined('DOING_AJAX') || defined('DOING_CRON') )
       
    15 	die();
       
    16 
       
    17 /**
       
    18  * Tell WordPress we are doing the CRON task.
       
    19  *
       
    20  * @var bool
       
    21  */
       
    22 define('DOING_CRON', true);
       
    23 
       
    24 if ( !defined('ABSPATH') ) {
       
    25 	/** Setup WordPress environment */
       
    26 	require_once('./wp-load.php');
       
    27 }
       
    28 
       
    29 if ( false === $crons = _get_cron_array() )
       
    30 	die();
       
    31 
       
    32 $keys = array_keys( $crons );
       
    33 $local_time = time();
       
    34 
       
    35 if ( isset($keys[0]) && $keys[0] > $local_time )
       
    36 	die();
       
    37 
       
    38 foreach ($crons as $timestamp => $cronhooks) {
       
    39 	if ( $timestamp > $local_time )
       
    40 		break;
       
    41 
       
    42 	foreach ($cronhooks as $hook => $keys) {
       
    43 
       
    44 		foreach ($keys as $k => $v) {
       
    45 
       
    46 			$schedule = $v['schedule'];
       
    47 
       
    48 			if ($schedule != false) {
       
    49 				$new_args = array($timestamp, $schedule, $hook, $v['args']);
       
    50 				call_user_func_array('wp_reschedule_event', $new_args);
       
    51 			}
       
    52 
       
    53 			wp_unschedule_event($timestamp, $hook, $v['args']);
       
    54 
       
    55  			do_action_ref_array($hook, $v['args']);
       
    56 		}
       
    57 	}
       
    58 }
       
    59 
       
    60 die();