使用wp_Next_Scheduled/wp_Schedule_Event复制Cron作业

时间:2017-08-07 作者:Ryan Dorn

我正在开发一个插件来注册和安排各种cron作业。我是:

使用WP Crontrol (只需查看我的所有cron作业并在需要时覆盖它们)设置服务器cron作业并define(\'DISABLE_WP_CRON\', true); 当我进入Crontrol中的“Cron事件”时,我看到一些函数被添加了数百次。具体来说,在“Cron事件”中,函数是注册/列出的内容,而不是挂钩。我的代码的简化版本:

class My_Cron_Manager {

    /**
     * Constructor
     */
    public function __construct() {

        add_filter( \'wp\', array( $this, \'my_schedule_cron_jobs\' ) );
        add_action( \'my_cron_event_func\', array( $this, \'my_cron_job_func\' ));

    }

    /**
     * Schedule cron Jobs
     */
    public static function my_schedule_cron_jobs() {

        if (! wp_next_scheduled ( \'my_cron_job_func\' )) {
            wp_schedule_event(time(), \'twicedaily\', \'my_cron_job_func\');
        };

    }

    /**
     * My Function
     */
    public static function my_cron_job_func() {

        // Do Stuff

    }

}

new My_Cron_Manager();
我怀疑我的代码在重新注册函数时出错,但我不能完全确定。我是否正在利用wp_next_scheduledwp_schedule_event 正确地

有人能告诉我我的上述代码是否会导致重复的挂钩/函数注册吗?

提前感谢!

1 个回复
SO网友:Ryan Dorn

好吧,我相信我的工作是正确的。我很好奇是否有人有更多的见解,但我相信发生了什么:

我错误地调用了我的类wp_next_scheduledwp_schedule_event 当我应该引用回调/挂钩时我修改后的代码(已经过测试,我可以确认工作正常)。

<小时>

define( \'MY_CRON_FILE\', __FILE__ );

class MY_Cron_Manager {

    /**
    * Hook in methods.
    */
    public static function init() {

        register_activation_hook( MY_CRON_FILE, array(__CLASS__, \'my_schedule_cron_jobs\' ));
        add_action( \'my_cron_job_event_func\', array( __CLASS__, \'my_cron_job_func\' )); //

    }

    /**
     * Schedule cron Jobs
     */
    public static function my_schedule_cron_jobs() {

        if (! wp_next_scheduled ( \'my_cron_job_event_func\' )) {
            wp_schedule_event(time(), \'twicedaily\', \'my_cron_job_event_func\');
        };

    }

    /**
     * My Function
     */
    public static function my_cron_job_func() {

        // Do Stuff

    }

}

MY_Cron_Manager::init();

结束

相关推荐

即使DISABLE_WP_CRON为TRUE,WP-cron仍在运行

我创建了一个cron作业来运行wp cron。php,但我在FPM日志中看到它仍在运行。据我所知,使用cron作业创建任何日志都不会影响FPM。有没有办法跟踪这个并找出运行该文件的是什么?