WP Cron被触发,但未按预期工作

时间:2016-04-04 作者:Liam

我创建了一个WP cron job, 我的cron作业代码如下所示:

    public function run_import(){
      if ( isset($_POST["run_import"])) {
        add_action( \'import_execution_event_test\', array($this, \'run_execution_script\' ));

        if(!wp_next_scheduled(\'import_execution_event_test\')){
                    wp_schedule_event( time(), \'every_two_minutes\', \'import_execution_event_test\');
        }
      }
     include ( plugin_dir_path( __FILE__ ) . \'views/view-import.php\' );
    }
请记住,我在这里也有一个自定义的时间表,每两分钟一次。

This is the function that should be executed every two minutes:

public function run_execution_script() {
        $curl = curl_init();
        curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => \'http://dev2.mydevs.co.uk/wp-cron.php?import_key=_GNIHMERsu&import_id=8&action=processing\',  
        CURLOPT_USERAGENT => \'Test Curl Request\',
        ));
        $resp = curl_exec($curl);
        curl_close($curl);
    }
该方法所做的只是发出简单的curl请求,如果我手动调用该方法,这个curl请求就可以工作。

总之,cron甚至出现在wp-cron计划中,它似乎像预期的那样每两分钟触发一次,但我的curl请求没有从cron运行。

有人知道为什么会这样吗?

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

在代码中,您有:

if ( isset( $_POST["run_import"] ) ) {
    add_action( \'import_execution_event_test\', ...
但当wp cron时。php是派生的,可能没有调用POST变量run_import, 因此,您的操作不会被添加,因此不会被触发。