如何测试wp_cron?


28

这是一个愚蠢的问题...

我安排了一个每小时运行的操作:

if(!wp_next_scheduled('my_hourly_events'))
  wp_schedule_event(time(), 'hourly', 'my_hourly_events');

add_action('my_hourly_events', 'the_function_to_run');

function the_function_to_run(){
   echo 'it works!'; 
}

我如何才能在不等待一个小时的情况下测试它是否有效?:)

我尝试wp_clear_scheduled_hook('my_hourly_events');在此代码之前添加,然后在wp_cron()之后添加,但是我看不到我的函数正在运行...

编辑:

好的,我trigger_error()在函数中添加了一个函数,签出了apache错误日志,它就在这里:)

所以现在我更加困惑了:

  • wp-cron如何在后台运行?因为如果我没有看到输出,那显然就是这样...

  • 这似乎在对象上下文中不起作用;为什么?


好的,我发现wp-cron.php正在执行wp_remote_post()。解释了一切……
onetrickpony

通过“对象上下文”,您的意思是您的回调就像array( &$this, 'my_method_name' )吗?确实不行,因为函数名称存储在数据库中,以后再执行。&$this引用特定对象而不是类名,并且在执行cron作业时下一个请求将不存在该对象。静态类函数应该起作用。
1月Fabry

是的,我必须将函数设为静态。我不认为wp会远程运行本地脚本“ cron”
onetrickpony

Answers:


20

我最喜欢的插件是Core Control,它有一个非常漂亮的模块,用于显示cron中正在发生的事情-设置了哪些事件,何时触发下一个事件等。

在使您的手变脏时,请参阅_get_cron_array(),它会为cron事件返回内部存储的数据(键的顶级是时间戳)。


HTTP Access Logger是记录所有请求还是仅记录WP的HTTP api发出的请求?这非常适合查找插件发出的请求以及您的页面加载缓慢的原因:)
onetrickpony

@One Trick Pony不确定,但是假设它仅是API是
有道理的
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.