我是一个很奇怪的问题。我使用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作业,因此它会根据您的需要不断创建这些帖子。