How to test wp_cron?

时间:2011-04-10 作者:onetrickpony

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

我计划每小时运行一次操作:

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() 之后,但我看不到我的函数正在运行。。。

edit:

好的,我加了一个trigger_error() 在我的函数中,查看了apache错误日志,它就在那里:)

所以现在我更困惑了:

wp cron如何在后台运行?因为很明显,如果我看不到输出,就会发生这种情况。。。

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

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

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

把手弄脏后,请参见_get_cron_array(), 它返回cron事件的内部存储数据(顶级键是时间戳)。

SO网友:Ian Dunn

wp-cli 是另一种方式:

正在列出事件

> wp cron event list
+-------------------+---------------------+-----------------------+---------------+
| hook              | next_run_gmt        | next_run_relative     | recurrence    |
+-------------------+---------------------+-----------------------+---------------+
| wp_update_plugins | 2020-04-14 08:11:38 | 7 hours 24 minutes    | 12 hours      |
| wp_update_themes  | 2020-04-14 08:11:38 | 7 hours 24 minutes    | 12 hours      |
| wcsc_prime_sites  | 2020-04-14 17:00:55 | 16 hours 13 minutes   | 1 day         |
+-------------------+---------------------+-----------------------+---------------+

安排活动

> wp cron event schedule wp_update_plugins "now +5 seconds"
Success: Scheduled event with hook \'wp_update_plugins\' for 2020-04-14 00:43:54 GMT.
然后,您可以访问站点的前端并刷新几次,以确保它已被触发。然后运行list 再次看到它不再是预定的。

直接在终端运行

> wp cron event run wcsc_prime_sites
Executed the cron event \'wcsc_prime_sites\' in 0.805s.
Success: Executed a total of 1 cron event.
需要注意的一个怪癖是wp-cli runs in the wp-admin context, 但是WP Cron在前端运行。这通常不是问题,但当你写作业时,确保你require() 任何wp-admin/includes 代码期望加载的文件。

如果不这样做,则作业将在wp cli中正常工作,但在正常运行时会产生致命错误。

其他命令运行wp help cron 了解更多详细信息。

结束

相关推荐

Custom Post Row Actions

我偶然发现this question 在写这个问题的时候。我有一个问题是关于这个问题的。我发现你用的是get_delete_post_link 筛选为我的操作创建一个新的url(或一个类似的函数——在任何情况下,我都会将该函数与布尔值一起使用)。唯一的问题是,I don\'t know how to capture the event now. 考虑到我在谷歌上找不到很多关于行后操作的例子,我将不胜感激-/public function _wp_filter_get_delete_post_link( $