使用类方法调度任务

时间:2013-05-14 作者:Diego

我需要在我的插件中实现一个计划任务,我试图遵循文档中的示例,将一个类方法作为目标传递。我安装了Cron管理器插件,我看到我的钩子已经安排好了,但第一个计划已经过了几秒钟。我想这是因为WP将第一个时间表设置为“现在”,应该立即调用挂钩。

问题是我附加到挂钩的方法没有被调用,Cron管理器显示“剩余秒数:-X”(其中X是我计划任务时经过的秒数)。

我将跳过wp_schedule 据我所知,它是有效的(钩子在预定列表中,虽然过去有时间戳),所以下面是相关代码:

// Cron hook is called myclass_cron
class MyClass {
    public function __construct() {
        add_action(\'init\', array($this, \'wordpress_loaded\'));
    }

    public function wordpress_loaded() {
        add_action(\'myclass_cron\', array($this, \'cron_tasks\'));
    }

    public function cron_tasks() {
        // Cron stuff. I tried adding a "sleep()" command to see if page load was slower, but it clearly doesn\'t go through this method
    }
}
如果我添加do_action(\'myclass_cron\'), cron_tasks() 按预期运行。我想知道我是不是在打电话add_action() 太晚了(即加载WP时),但我尝试将其移动到类构造函数,问题仍然存在。

提前感谢您的回答。

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

事实上,我发现Cron可以工作,只是不像我预期的那样。我刷新了页面并打了电话wp-cron.php (使用wget) 有好几次,我一直看到我的cron任务时间表上写着“X秒”。然后我停了一两分钟,刷新了站点的前端页面,我的Cron任务被调用了。

一个小时后,当第二次执行计划的时候,我重复了测试。任务几秒钟后就要完成了,所以我等了大约10秒钟,加载了一个随机页面:什么都没发生。我又等了半分钟左右,再次加载了一个随机页面,任务被调用了。

WordPress似乎有一种“轻松”的方式来称呼Cron-jobs,我还不完全理解。无论如何,我的方法是正确的,我的期望是不正确的。:)

结束

相关推荐

在Backpress中使用wp-cron-wp_Remote_POST问题,fsockopen错误

我正在做一个BackPress项目,需要安排cron任务。BP的cron\\u uri存储在options中,而不是像在WP core中那样硬编码。我已尝试将选项设置为mysite.com/wp-cron.php (其中wp-cron.php 本质上是WordPress中同一文件的副本,修改后仅包含与我的目的相关的文件。问题是,当从wp_cron() 函数,它返回以下fsockopen错误:fsockopen()[function.fsockopen]: 无法连接到中的:80(php\\u networ