wp_schedule_single_event是否创建多个事件?


Does wp_schedule_single_event create multiple events?

我是一个很奇怪的问题。我使用Wordress 3.9.1和在一个管理员的插件我有这个代码:

function do_this_event_now() {
    for ($i = 0; $i < 5; $i++)
    {
        $my_post = array(
          'post_title'    => 'My post: '. date('Y-m-d H:i:s'),
          'post_content'  => 'This is my post.',
          'post_status'   => 'publish',
          'post_author'   => 1,
          'post_category' => array(1)
        );
        // Insert the post into the database
        wp_insert_post( $my_post );
        sleep(50);
    }
}
add_action( 'my_new_event', 'do_this_event_now' );
wp_schedule_single_event( time(), 'my_new_event' );  

它应该每50秒创建一个帖子。但结果却很奇怪。

我正确地看到了5个帖子,但标题(我写date('Y-m-d H:i:s')的地方)真的错了:

My post: 2014-07-10 15:14:57
My post: 2014-07-10 15:15:47
My post: 2014-07-10 15:16:01
My post: 2014-07-10 15:16:38
My post: 2014-07-10 15:16:51

正如你所看到的,差异不是50秒!

这怎么可能?这是一个单一的事件,为什么会有这样奇怪的结果?

谢谢!

与大多数系统管理员习惯使用的cron不同,WP-Cron不基于服务器的时钟,甚至不基于服务器本身。相反,每当有人访问你的页面或帖子时,就会有一张支票。每次WordPress开始渲染页面时,它都会检查是否有任何作业需要使用WP-Cron运行。如果您的站点不经常被访问(像大多数开发站点一样),那么您的帖子不会每50秒创建一次。您可以按照以下指南进行更改:http://www.kettlewellconsulting.com/2013/06/23/reliably-schedule-wordpress-tasks/关闭默认的WP-Cron并实现您自己的cron作业,因此它会根据您的需要不断创建这些帖子。