每小时事件不会被触发

时间:2016-09-08 作者:user102424

我试着每小时在我的wp插件中检查一个动作,但效果不好。

我正在这样做:

register_activation_hook(__FILE__, function() {
    //more stuff

    if (! wp_next_scheduled ( \'my_hourly_event\' )) {
        wp_schedule_event(time(), \'hourly\', \'my_hourly_event\');
    }
});
add_action(\'my_hourly_event\', \'do_this_hourly\');

function do_this_hourly() {
    wp_mail(\'[email protected]\', \'prueba cron\', \'prueba cron innovation\');
}
但我每天只收到2-5封邮件,而不是在预期的时间(例如,今天我只收到了2封邮件,分别是上午8:21和11:51;昨天还有2封,都是11:45…)。

我无法访问服务器来进行真正的cron作业。

1 个回复
SO网友:cjbj

您的站点上可能没有足够的访问者。尽管看起来不是这样,WordPress实际上并没有安排活动。它会记录发生在数据库中的时间,并且只有当有人访问该站点时,WP才会被触发,它会检查数据库并触发事件。

因此,如果没有人在你想要的时间出现,你的活动就不会发生。

为了确保事件在您想要的时间准确触发,您需要做的是绕过WP自己的调度系统,并直接使用操作系统对其进行调度。如果你在谷歌上搜索“wordpress force cron job”,你会发现很多教程。我喜欢this one.

当然,如果您无法访问cpanel 或者其他允许您设置cron作业的托管服务(如您所说)。在这种情况下,谷歌搜索“免费cron作业”。这将为您提供一个服务器,作为触发事件的每小时访问者。

相关推荐

如何在Reaction JS/Gutenberg中使用wp.hooks.addAction()?

我能够成功使用wp.hooks.applyFilters() 和wp.hooks.addFilter(), 但我无法使用wp.hooks.addAction(). 但是console.log() 在某个操作的回调中运行良好。这是我的代码:import { createHooks } from \'@wordpress/hooks\'; let globalHooks = createHooks(); const Header = () => { r