我是一个非常奇怪的问题。我正在使用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秒!
这怎么可能?这是一个单一的事件,为什么这个奇怪的结果?
谢谢!
答案 0 :(得分:0)
与大多数系统管理员习惯使用的cron不同,WP-Cron不是基于服务器的时钟,甚至不是服务器本身。相反,每当有人打电话给您的某个页面或帖子时,都会进行检查。每次WordPress开始呈现页面时,它都会检查是否有任何需要与WP-Cron一起运行的作业。如果您的网站不经常访问(如大多数开发网站),那么您的帖子将不会每50秒创建一次。您可以按照以下指南进行更改:http://www.kettlewellconsulting.com/2013/06/23/reliably-schedule-wordpress-tasks/关闭默认的WP-Cron并实现您自己的cron作业,因此它会不断创建这些帖子。