WordPress“Cron”을 디버깅하는 방법 wp_schedule_event


22

WordPress Cron 관련 문제를 어떻게 디버깅 할 수 있습니까? 사용자가 귀하의 사이트를 방문하면 트리거 될 것이라고 생각하지만 작업이 "비동기 적으로"실행되므로 오류가 표시되지 않습니다. 그렇다면 어떻게 오류를 디버깅 할 수 있습니까?

나는 사용한다 wp schedule event


1
이 문서를 읽으십시오 : developer.wordpress.org/plugins/cron/…
Nanhe Kumar

를 사용하여 고급 크론 관리자 플러그인
고객

답변:


27

다음을 호출하여 WP cron을 수동으로 실행할 수 있습니다. http://example.com/wp-cron.php?doing_wp_cron

디버깅하는 동안 자동 크론을 실행하지 않으려면 /wp-config.php파일 에 이것을 추가 하십시오.

define('DISABLE_WP_CRON', true);

개발 환경에 있고 디버그 정보를 출력하려면 수동으로 호출하면 디버그 출력이 표시됩니다.

또는 PHP의 내장 error_log 함수를 사용하여 디버깅을 위해 메시지 문자열을 오류 로그에 기록 할 수 있습니다. Rarst 에서 언급했듯이 이것을 WP_DEBUG settings 과 함께 사용해야합니다.


?doing_cron매개 변수 와 함께 힌트를 주셔서 감사합니다 .
rofflox

3
나는 그것이 ?doing_wp_cron대신 해야한다고 생각합니다 ?doing_cron.
liviucmg

@liviucmg 네, 그렇습니다. 내가 조정했습니다.
Simon East

1
는 IS ?doing_wp_cron매개 변수는 필수? EasyCron의 수동 설정 튜토리얼을 참조하십시오 .
AlecRust

@gabrielk? doing_cron 매개 변수가 필요합니까? 무슨 뜻이에요?
jedi

6

Cron-View 플러그인을 사용할 수 있습니다 . 거기에서 직업이 a) 등록되어 있는지, b) 다음 마감 시간이 무엇인지 확인할 수 있습니다.

또한 이벤트에 더 낮은 스케줄 타이머를 추가하고 (예 : 2 분마다) 로컬 시스템에서 메소드를 더 자주 테스트 할 수 있습니다. 새로운 스케줄 시간을 등록하려면 'cron_schedules'필터 후크를 사용하십시오. 예를 들면 다음과 같습니다.

function my_additional_schedules($schedules) {
    // interval in seconds
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'Every two minutes');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');


3

조치를 작성하고 내부에서 Cron 조치를 실행하여 수동으로 디버그 할 수 있습니다. 이처럼 :

add_action( 'init', function() {

    if ( ! isset( $_GET['the_cron_test'] ) ) {
        return;
    }

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

그리고 귀하의 웹 사이트 주소로 이동하면 : http://example.com?the_cron_test

cron 태스크의 오류가 표시됩니다.

그러나 수동으로 수행하는 것은 의미가 없습니다. 이를 위해 Advanced Cron Manager PRO 플러그인을 사용할 수 있으며 로그 및 기타 통계도 저장합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.