我试图在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运行该脚本。这正是我想要的。然而,当我把它放到服务器上时,它似乎并不是每小时都独立运行。既然脚本正在运行,我如何确保事件实际得到安排?