我有这段代码:
// set up cron job
wp_schedule_event(time(), 'hourly', 'test_event');
add_action('test_event', 'testFunction');
function testFunction()
{
$query = new WP_Query(array(
'post_type' => 'tour',
'post_status' => 'publish'
));
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
echo $post_id . "a<br>";
}
}
当然,我禁用了Wp cronjob define('DISABLE_WP_CRON', true);
。
当我在浏览器中转到http://my-domain/wp/wp-cron.php?doing_wp_cron
(域是本地的,因此无法使用wget在crontab中设置真正的cronjob)时,它会多次输出帖子ID,如下所示:
1
2
3
1
2
3
有时甚至更多,有时它会导致内存错误。在我看来,cronjob无限运行。我无法弄清楚原因。
不是WP专业版,所以任何建议都表示赞赏!
感谢。
答案 0 :(得分:0)
当您致电wp_schedule_event
时,会注册一个新活动。您应该只调用该函数一次(事件在全局范围内通过多次访问持续存在),文档建议scheduling after plugin activation。
“要在插件中安排每小时活动,请在激活时致电wp_schedule_event
(否则您最终会收到大量预定活动!)”
您需要使用wp_unschedule_event
清除当前绑定,然后调用该函数一次。如果它是您主题的一部分,请使用它们激活并将您的主题切换为其他内容并返回。
答案 1 :(得分:0)
wp_schedule_event
在您的WordPress安装中注册一个cron任务。
所以,你在这里做的是,每次你运行你的cron,你都会告诉WordPress在最后一次运行你的功能。
如果您已经访问过cron页面10次,那么您的cron每次访问将运行10次。
如果需要,您可以使用wp_unschedule_event
取消预定活动。