programing

플러그인의 wp_cron_event()가 cron 이벤트를 스케줄링하지 않음

showcode 2023. 3. 31. 23:03
반응형

플러그인의 wp_cron_event()가 cron 이벤트를 스케줄링하지 않음

WordPress 플러그인을 만들고 있는데 플러그인이 활성화되면 5분마다 실행되도록 cron 작업을 예약해야 합니다.

제 암호는 이렇습니다.

// Register plugin activation hook
function my_plugin_activate() {
    if( !wp_next_scheduled( 'my_function_hook' ) ) {  
       wp_schedule_event( time(), '5', 'my_function_hook' );  
    }
}
register_activation_hook( __FILE__, 'my_plugin_activate' );

// Register plugin deactivation hook
function my_plugin_deactivate(){
    wp_clear_scheduled_hook('my_function_hook');
}
register_deactivation_hook(__FILE__,'my_plugin_deactivate');

// Function I want to run when cron event runs
function my_function(){
    //Function code
}
add_action( 'my_function_hook', 'my_function');

이 플러그인 https://wordpress.org/plugins/wp-crontrol/을 사용하여 cron 이벤트를 확인해도 추가된 것이 없습니다.my_function'을 5분 간격으로 실행하는 cron 이벤트가 추가되어야 하는데 오류가 없습니다.

참조:

반복의 유효한 값은 hourly, daily 및 twisedaily입니다.이것들은 wp_get_schedules()의 'cron_schedules' 필터를 사용하여 확장할 수 있습니다.

따라서 5분마다 실행되는 사용자 지정 일정만 추가하면 됩니다.

<?php // Requires PHP 5.4+.

add_filter( 'cron_schedules', function ( $schedules ) {
    $schedules['every-5-minutes'] = array(
        'interval' => 5 * MINUTE_IN_SECONDS,
        'display'  => __( 'Every 5 minutes' )
    );
    return $schedules;
} );

if( ! wp_next_scheduled( 'my_function_hook' ) ) {  
    wp_schedule_event( time(), 'every-5-minutes', 'my_function_hook' );  
}

WP Cron은 누군가가 당신의 웹사이트를 방문하면 실행됩니다.따라서 아무도 방문하지 않으면 cron은 실행되지 않습니다.

다음 2가지 솔루션이 있습니다.

  1. WP Cron을 디세블로 하고 실제 cron 작업을 사용하여 커스터마이즈합니다.

https://support.hostgator.com/articles/specialized-help/technical/wordpress/how-to-replace-wordpress-cron-with-a-real-cron-job

  1. 합니다.wp_schedule_event():

    function myprefix_custom_cron_schedule( $schedules ) {
        $schedules['every_six_hours'] = array(
            'interval' => 21600, // Every 6 hours
            'display'  => __( 'Every 6 hours' ),
        );
        return $schedules;
    }
    add_filter( 'cron_schedules', 'myprefix_custom_cron_schedule' );
    
    //Schedule an action if it's not already scheduled
    if ( ! wp_next_scheduled( 'myprefix_cron_hook' ) ) {
        wp_schedule_event( time(), 'every_six_hours', 'myprefix_cron_hook' );
    }
    
    ///Hook into that action that'll fire every six hours
     add_action( 'myprefix_cron_hook', 'myprefix_cron_function' );
    
    //create your function, that runs on cron
    function myprefix_cron_function() {
        //your function...
    }
    

그리고 이 주둥이들을 볼 수 있습니다.

http://www.nextscripts.com/tutorials/wp-cron-scheduling-tasks-in-wordpress/

http://www.iceablethemes.com/optimize-wordpress-replace-wp_cron-real-cron-job/

http://www.smashingmagazine.com/2013/10/16/schedule-events-using-wordpress-cron/

커스텀 Wp cron

http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules

http://www.smashingmagazine.com/2013/10/16/schedule-events-using-wordpress-cron/

http://www.viper007bond.com/2011/12/14/how-to-create-custom-wordpress-cron-intervals/

http://www.sitepoint.com/mastering-wordpress-cron/

https://tommcfarlin.com/wordpress-cron-jobs/

http://www.paulund.co.uk/create-cron-jobs-in-wordpress

cron 리눅스

http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

http://www.thesitewizard.com/general/set-cron-job.shtml

http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800

구글 검색

@dingo_d 코멘트대로 WordPress Cron은 서버 Cron과 같이 동작하지 않습니다.WordPress Cron은 페이지 로드 시 실행됩니다.데이터베이스에 예약된 이벤트가 있는지 확인하고 이벤트가 예약된 경우 작업을 실행합니다.따라서 5분 이내에 웹사이트를 방문하지 않으면 해당 기간 동안 작업이 실행되지 않습니다.누군가가 웹 사이트를 방문하면 페이지 로드 프로세스가 실행되고 예약된 이벤트가 발생합니다.

WordPress는 서버에서 특별한 Cron 기능을 필요로 하지 않고 동작하도록 설정되어 있습니다.

이 문제를 피하기 위해 웹 사이트를 자동으로 방문하는 서비스를 사용하거나 서버에 자동으로 페이지를 로드하도록 Cron 스크립트를 설정할 수 있습니다.

Linux 서버를 터미널에 ssh로 연결한 후 쓰기crontab -eEnter 키를 누릅니다.cron 작업을 설정하기 위해 cron 파일을 입력합니다.다음 행을 파일에 추가합니다.

/5 * * * wget -q -O - http://yourdomain.com/wp-cron.php?doing_wp_cron

대용품http://yourdomain.com를 참조해 주세요.그러면 웹 사이트가 5분마다 방문됩니다.

https://tommcfarlin.com/wordpress-cron-jobs/에서 이 방법에 대한 정보를 얻었기 때문에 WordPress cron 정보가 더 많이 링크되어 있습니다.

언급URL : https://stackoverflow.com/questions/47249581/wp-schedule-event-in-plugin-not-scheduling-a-cron-event

반응형