WordPress Cron 작동 방식

게시 됨: 2021-12-03

WP-Cron이 무엇인지 궁금해 한 적이 있습니까? 그렇다면 WordPress 예약 작업에 대해 알아야 할 모든 것을 배울 수 있는 완벽한 기사입니다.

Cron(Command Run On)은 UNIX 시스템에서 시작된 유틸리티이며 나중에 시간 기반 작업 스케줄러로 제안된 LINUX 배포판에서 발전했습니다.

cron 작업은 반복적으로 수행되거나 일회성 작업으로 수행되는 작업입니다. 수년에 걸쳐 자동으로 작업을 실행하기 위한 시스템 관리 도구로 주로 사용되었습니다.

워드프레스 크론

WordPress 웹 사이트를 실행하는 동안 테마 및 플러그인 업데이트, 예약된 게시물, 삭제할 임시 항목 등을 확인하는 것과 같이 주기적으로 실행해야 하는 일부 작업이 백그라운드에서 수행됩니다. 이러한 시간 기반 예약 작업은 WP-Cron에서 처리합니다.

WordPress 설치에서 cron 작업과 관련된 파일은 설치의 루트 폴더에 있는 wp-cron.php 파일입니다.

wp-cron.php 파일에는 업데이트 및 게시물과 관련된 자동화 작업에 대한 코드가 포함되어 있습니다.

작동 원리

WP-Cron은 페이지가 로드될 때마다 작업 목록을 확인하고 그에 따라 실행합니다.

페이지가 로드되는 순간 작업이 마감되면 대기열에 추가됩니다. 그렇게 하면 WordPress는 예정된 이벤트도 실행되고 건너뛰지 않고 결국 모든 작업이 해당 페이지 로드에서 실행되도록 합니다.

이것이 당신에게 비합리적으로 보인다면 당연하지만 대안에 대해 생각하십시오. 대부분의 경우 공유 호스팅 환경에서 이러한 작업을 적절하게 제어하려면 서버 명령에 액세스할 수 있어야 하지만 서버에 위험하지 않을까요?

따라서이 상황에서 WordPress가 해결 방법으로 수행하는 작업을 고려하십시오. 그러나 이것은 잠시 후에 검토할 몇 가지 단점이 있습니다.

WP-Crontrol 플러그인

WordPress 웹사이트에서 크론 작업 목록을 보는 훌륭하고 쉬운 방법은 WP-Crontrol 플러그인을 설치하는 것입니다.

활성화한 후 도구->크론 이벤트 메뉴 항목에서 플러그인의 관리 페이지를 볼 수 있습니다. 바닐라 설치에서는 다음과 같은 내용을 볼 수 있습니다.

각 행 위로 마우스를 가져가면 이벤트를 편집하거나 실행할 수 있는 작업이 제공됨을 알 수 있습니다.

예를 들어 wp_update_themes 이벤트의 편집 화면에서 해당 설정을 수정할 수 있습니다.

설정 -> Cron 일정 메뉴 항목에서 기본 일정을 볼 수 있으며 원하는 경우 자신의 일정을 추가하고 목록에서 볼 이름을 지정할 수 있습니다.

크론 작업을 만드는 방법

cron 작업을 수동으로 추가하려면 테마의 functions.php 파일을 편집하기만 하면 됩니다. 간단한 예제를 시연하려면 즐겨 사용하는 편집기로 열고 다음 코드를 추가하십시오.

 add_action( 'my_cronjob', 'my_cronjob_function' ); function my_cronjob_function() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); }

여기서 'my_cronjob'은 후크의 이름이고 'my_cronjob_function'은 EMAIL_ADDRESS를 원하는 주소로 바꾸어 정의한 주소로 이메일을 보내는 함수의 이름입니다.

다음으로 이 후크가 원하는 시간에 실행되도록 예약해야 합니다.

작업을 한 번 실행하는 방법

일회성 WP-Cron 작업으로 작업을 수행하려면 지정된 시간에 후크를 트리거하도록 설계된 wp_schedule_single_event() WordPress 내장 함수를 사용해야 합니다. 그 구조는 이렇습니다.

wp_schedule_single_event( $timestamp, $hook, $args, $wp_error )

여기서 $timestamp는 다음에 이벤트를 실행할 Unix 타임스탬프이고 $hook은 이벤트가 실행될 때 실행할 작업 후크입니다.

이 두 매개변수는 모두 필수입니다. 이제 선택적 매개변수에 대해 이야기해 보겠습니다.

$args 매개변수를 사용하면 인수가 포함된 배열을 사용하여 후크의 콜백 함수에 전달할 수 있습니다. 배열의 각 값은 개별 매개변수로 콜백에 전달됩니다. 배열 키는 무시됩니다.

$wp_error 매개변수는 실패 시 WP_Error를 반환하는 데 사용할 수 있습니다. 기본값은 false입니다.

functions.php 파일의 해당 코드는 다음과 같습니다.

 add_action( 'my_cronjob', 'my_cronjob_function' ); function my_cronjob_function() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } wp_schedule_single_event( time() + 3600, 'my_cronjob' );

이 시점에서 목록에서 사용자 정의 작업을 볼 수 있어야 합니다.

작업을 반복 이벤트로 실행하는 방법

WordPress가 이 시나리오에 제공하는 것은 다음과 같이 구성된 wp_schedule_event() 함수입니다.

wp_schedule_event( $timestamp, $recurrence, $hook, $args, $wp_error)

$timestamp 매개변수는 다음에 이벤트를 실행할 때 필요한 Unix 타임스탬프이고, $recurrence는 이벤트가 이후에 반복되어야 하는 빈도에도 필요한 문자열이며, $hook은 이벤트가 실행될 때 실행할 작업 후크입니다.

선택적 $args 및 $wp_error 매개변수는 이전과 동일합니다.

1시간이 반복되는 작업을 실행하는 코드는 다음과 같습니다.

 add_action('my_hourly_cronjob', 'hourly_action'); function hourly_action() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } if (! wp_next_scheduled ( 'my_hourly_cronjob' )) { wp_schedule_event(time(), 'hourly', 'my_hourly_cronjob'); }

중복된 이벤트를 방지하고 작업을 진행하고 실행하기 전에 작업이 이미 예약되지 않았는지 확인하기 위해 위와 같이 'if' 문에서 wp_next_scheduled() 함수를 사용했습니다.

또한 설정 -> Cron 일정 아래의 예약된 테이블에서 '시간별' 레이블을 사용했습니다. 45분마다 다른 발생을 원하면 먼저 "45_minutes"라는 사용자 지정 Cron 일정을 만든 다음 코드에서 사용해야 합니다.

 add_action('my_45_cronjob', 'my_45_action'); function my_45_action() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } if (! wp_next_scheduled ( 'my_45_cronjob' )) { wp_schedule_event(time(), '45_minutes', 'my_45_cronjob'); }

이 시점에서 예상되는 변경 사항과 함께 목록에서 사용자 지정 작업을 볼 수 있어야 합니다.

WP-Cron의 단점

WordPress가 cron 작업을 처리하는 방식은 작업 실행을 보장하지만 우리가 말했듯이 방문자가 웹 사이트의 페이지를 로드할 때 확인이 수행되기 때문에 언제 지정할 수 없습니다.

사용자의 방문 시간에 대한 cron 작업 제어를 릴레이하면 웹 사이트의 크기나 인기도에 관계없이 웹 사이트에 부정적인 영향을 미칠 수 있습니다.

Pressidium으로 웹사이트 호스팅

60일 환불 보장

계획 보기

인기있는 웹사이트의 경우 많은 작업을 동시에 수행하기 때문에 많은 트래픽을 경험하게 됩니다. 이것은 서버의 리소스를 소모하고 성능에 영향을 미치거나 웹사이트의 다운타임을 유발할 수도 있습니다.

방문자가 적은 소규모 웹사이트의 경우 wp-cron이 자주 실행되지 않으므로 백업이 충분하지 않거나 일부 업데이트가 지연되는 등의 부작용이 발생하기 위해 일부 중요한 cron 작업이 충분한 시간 동안 연기될 수 있습니다. cron 작업에서 계산되는 데이터입니다.

WP-Cron 비활성화

WP-Cron이 cron 작업을 처리하는 방식이 요구 사항을 충족하지 않고 적시에 실행되는 작업이 필요한 경우 WP-Cron을 비활성화하고 서버 측 cron 서비스를 사용해야 합니다.

WP-Cron 비활성화가 호스팅 제공업체에서 이미 제공한 옵션이 아닌 경우 직접 수행할 수 있는 방법은 다음과 같습니다.

설치 루트 폴더 아래에 있는 wp-config.php 파일을 즐겨 사용하는 편집기로 열고 데이터베이스 테이블 접두사와 관련된 행을 찾으십시오. 바로 뒤에 다음 줄을 삽입합니다.

 // /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wN0b9WQk_'; define('DISABLE_WP_CRON', 'true');

이것은 당신에게 더 적합할 때마다 wp-cron.php를 트리거하기 위해 Linux cron 서비스와 같은 보다 안정적인 스케줄러를 사용하려는 경우 필수입니다.

서버 측 솔루션: Linux Cron 서비스

Pressidium에서는 Linux Crontab을 사용하여 5분마다 WP-Cron을 실행합니다. 예약된 작업이 정시에 실행되도록 하는 동시에 WordPress 웹사이트에 과부하가 걸리지 않도록 하는 적절한 시간입니다. 이것은 WP-Cron 스케줄러를 방해하지 않고 트리거 메커니즘만 방해합니다.

결론

이 기사가 WordPress Cron, 정의 및 작동 방식, 자신의 일정 및 작업을 만드는 방법에 익숙해지는 데 도움이 되었기를 바랍니다. 다른 서버 측 솔루션을 선택하기 전에 WP-Cron이 귀하의 요구 사항에 적합한지 다시 한 번 생각하십시오.