如何调试WordPress“ Cron” wp_schedule_event


Answers:


27

您可以通过调用以下命令来手动运行WP cron: http://example.com/wp-cron.php?doing_wp_cron

如果您不希望在调试时运行自动cron,请将其添加到/wp-config.php文件中:

define('DISABLE_WP_CRON', true);

如果您在开发环境中并希望输出调试信息,则像这样手动调用它将显示调试输出。

另外,您可以使用PHP的内置error_log函数将消息字符串记录到错误日志中进行调试。如Rarst所述,您需要将此与WP_DEBUG设置结合使用。


感谢您提供有关?doing_cron参数的提示。
rofflox

3
我相信应该?doing_wp_cron代替?doing_cron
liviucmg 2015年

@liviucmg是的,您是对的。我做了调整。
西蒙·伊斯特

1
是否?doing_wp_cron需要该参数?请参阅EasyCron的手册设置教程
AlecRust

@gabrielk是否需要?doing_cron参数?这是什么意思?
jedi

6

您可以使用插件Cron-View。在这里,您可以查看您的工作是否a)已注册,b)下一个到期时间是什么。

另外,您可以为事件添加一个较低的调度计时器(例如,每2分钟),并在本地系统上更频繁地测试您的方法。使用“ cron_schedules”过滤器挂钩注册新的时间表时间。例如:

function my_additional_schedules($schedules) {
    // interval in seconds
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'Every two minutes');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');


3

您可以通过创建动作并在其中执行Cron动作来进行手动调试。像这样:

add_action( 'init', function() {

    if ( ! isset( $_GET['the_cron_test'] ) ) {
        return;
    }

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

并转到您的网站地址: http://example.com?the_cron_test

这应该向您显示cron任务的任何错误。

但这完全没有意义。您可以使用Advanced Cron Manager PRO插件为您执行此操作,还可以保存日志和其他统计信息。

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.