【问题标题】:Wordpress' pseudo cronWordpress 的伪 cron
【发布时间】:2012-01-16 17:52:31
【问题描述】:

它只是不起作用,我不知道出了什么问题。也许有人可以帮助我。 这是我的代码:

add_action('kawabunga',function(){
    echo '<h1>KAWABUNGA!!!!1</h1>';
});


if (!wp_next_scheduled('kawabunga')) {
    wp_schedule_single_event(time()+120, 'kawabunga');
}

然后我用这段代码来查看一个任务发生了什么:

echo 'scheduled = ' . wp_next_scheduled('kawabunga');
echo '<br>time = ' . time();

它的行为符合我的预期:首先显示两个时间戳,在 2 分钟内仅显示第二个,因为执行了一个操作并且不再安排它,因此它返回“false”,而不是时间戳。 但我的函数并没有真正执行,它没有打印&lt;h1&gt;KAWABUNGA!!!!1&lt;/h1&gt;,而且我的 IDE 也没有在断点处停止。

我还在网站的其他部分测试了一个操作:do_action('kawabunga');,它工作得很好。它不仅在 cron 中有效。

有什么想法吗?

【问题讨论】:

  • 您是否尝试过使用“真实”回调函数而不是匿名函数实现?也许在这种情况下它会以某种方式丢失..

标签: php wordpress cron


【解决方案1】:

Aurimas 是对的,您需要定义一个可以在以后的请求中调用的函数。所以在这里使用匿名函数是行不通的。

相信在页面输出后会触发cron处理,以免拖慢用户体验。输出一个不会有任何影响。您最好通过调用 mail() 或 wp_mail() 进行测试(或者如果邮件在您的系统上不起作用,则写入文件)。

通过这两个更正,您的代码看起来不错。

【讨论】:

    【解决方案2】:

    尝试在这些行之后调用 wp_cron()

    add_action('kawabunga', function(){
        echo '<h1>KAWABUNGA!!!!1</h1>';
    });
    
    if (!wp_next_scheduled('kawabunga')) {
        wp_schedule_single_event(time()+120, 'kawabunga');
    }
    
    wp_cron();
    

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 2011-04-17
      • 2018-04-05
      • 1970-01-01
      • 2014-08-31
      • 2019-05-04
      • 2012-11-24
      • 2017-09-18
      • 1970-01-01
      相关资源
      最近更新 更多