WordPress Cron作业,302响应

时间:2018-11-07 作者:ellen

我试图在wordpress中调试cron作业。它应该会更新用户小时数,但不会,在代码中加入一些测试语句后,我不太确定它是否正在运行。

我打开了调试模式,就像在wp-config.php:

define(\'WP_DEBUG\', true);
define(\'WP_DEBUG_LOG\', true);
define(\'WP_DEBUG_DISPLAY\', true);
我调用我的cron事件functions.php 像这样:

add_action(\'wp\', \'my_activation\');
add_action(\'update_user_hours\', \'do_this_hourly\');

function my_activation() {
    if ( !wp_next_scheduled( \'update_user_hours\' ) ) {
        wp_schedule_event(time(), \'hourly\', \'update_user_hours\');
    }
}

function update_user_hours(){
     error_log(\'the function actually gets called\')
} 
基本上我什么都得不到error_log 要在日志文件中打印的语句,我不完全确定如何进行调试。日志文件中也没有显示其他错误。

为了进行测试,我使用WP Crontrol运行该事件。

关于如何调试这个有什么想法吗?

谢谢

更新:有人指出了添加cron事件的错误,我对代码进行了如下更新:

add_action(\'wp\', \'my_activation\');
add_action(\'update_user_hours\', \'do_this_hourly\');

function do_this_hourly(){
    error_log(\'foo\');
    //update the user hours
}

function my_activation() {
    if ( !wp_next_scheduled( \'update_user_hours\' ) ) {
        wp_schedule_event(time(), \'hourly\', \'update_user_hours\');
    }
}
我还开始使用wp-cli,并能够从那里成功运行事件。我查看了php错误日志,里面没有关于我的cron作业的内容。

用户小时数仍未更新。此时,可能是脚本本身出错,但如果脚本崩溃,它不会以某种方式进入php错误日志。我正在查看的错误日志位于/var/log/apache2, 我在Ubuntu 16上使用了一个灯栈。有没有关于如何调试的信息?

再次感谢!

更新(再次):我发现了一个语法错误,现在可以使用wp cli运行该脚本。这正是我想要的。然而,当我把它放到服务器上时,它似乎并不是每小时都独立运行。既然脚本正在运行,我如何确保事件实际得到安排?

1 个回复
SO网友:Tom J Nowell

这里的问题是关于如何安排cron事件的错误,让我们从以下内容开始:

wp_schedule_event(time(), \'hourly\', \'my_schedule_hook\', $args);

wp_schedule_event(time(), \'hourly\', \'update_user_hours\');
你在告诉WordPressupdate_user_hours 每小时的行动/事件。

然后,挂接此链接以触发回调:

add_action(\'update_user_hours\', \'do_this_hourly\');
但是,不是宣布do_this_hourly, 出于某种原因,代码声明了一个名为update_user_hours:

function update_user_hours(){
     error_log(\'the function actually gets called\')
}
所以do_this_hourly 函数未定义,添加了一个完全断开连接的完全随机的新函数,最重要的是,缺少了一个分号。我预计PHP错误日志中会出现语法错误和缺少回调警告

额外注释WP_DEBUG_LOG 不启用调试日志,它只是移动PHP错误日志,最好使用真实的错误日志,而不是使用WP CLI来触发列表和调试cron事件,而不是使用第三方插件。谁知道这个插件在做什么,或者它是如何干预的?不要隐藏警告,修复它们。如果您检查了它,就可以直接找到原因和修复方法,而不必到这里来,请尝试使用查询监视器插件,它会标记警告、错误和其他内容

结束

相关推荐

如何确保WP-Cron工作循环通过所有帖子?

我正在使用WP Crontrol,每天运行一些CRON作业来检查帖子的年龄。如果帖子提前2天发布,则会被删除。这是可行的,但由于某种原因,只有三天以上的帖子被删除了。还有一些仍在出版中。这一定是因为网站上大约有3000个帖子。有没有办法让我的CRON工作更有效率?以下是我运行的当前代码:class EventsWPCron { public function __construct() { if ( ! wp_next_scheduled( \'