설명
Action Scheduler는 WordPress에서 대량의 작업을 배경 처리하기 위한 확장 가능하고 추적 가능한 작업 대기열입니다. 이는 특히 WordPress 플러그인에 배포되도록 설계되었습니다.
Action Scheduler는 미래의 특정 시점에 실행될 액션 훅을 트리거하여 작동합니다. 각 훅은 고유한 데이터와 함께 예약될 수 있으며, 이를 통해 콜백이 해당 데이터에 대한 작업을 수행할 수 있습니다. 또한, 훅은 한 번 또는 여러 번 실행되도록 예약될 수 있습니다.
do_action()
에 대한 확장 기능으로, 훅을 지연시키고 반복할 수 있는 기능을 추가한다고 생각하세요.
전투에서 검증된 배경 처리
매달 Action Scheduler는 구독을 위한 수백만 건의 결제를 처리하고, WooCommerce를 위한 웹훅, 그리고 다양한 다른 플러그인을 위한 이메일 및 기타 이벤트를 처리합니다.
이는 라이브 사이트에서 50,000개 이상의 작업을 처리하는 큐를 처리하고, 결제 처리 및 주문 생성과 같은 리소스 집약적인 작업을 시간당 10,000개 이상 지속적으로 수행하면서도 정상적인 사이트 운영에 부정적인 영향을 미치지 않는 것으로 확인되었습니다.
이 모든 것은 플러그인 작성자의 통제 밖에 있는 인프라와 WordPress 사이트에 관한 것입니다.
플러그인이 특히 대량의 작업 세트를 배경 처리해야 하는 경우, Action Scheduler가 도움을 줄 수 있습니다.
더 알아보기
Action Scheduler가 어떻게 작동하는지, 그리고 플러그인에서 어떻게 사용하는지 더 알아보려면 ActionScheduler.org의 문서를 확인하세요.
거기에서 찾을 수 있습니다:
- 사용 가이드: Action Scheduler 설치 및 사용 방법 안내
- WP CLI 가이드: WP CLI를 통해 대규모로 Action Scheduler를 실행하는 방법에 대한 지침
- API 참조: 모든 API 함수에 대한 완전한 참조 가이드
- 관리 가이드: 관리 화면을 통해 예약된 작업을 관리하는 가이드
- 대규모 배경 처리 가이드: 기본 WP Cron 큐 실행기를 통해 대규모로 Action Scheduler를 실행하는 방법
크레딧
Action Scheduler는 Automattic에 의해 개발 및 유지 관리되며, 초기 개발의 상당 부분은 Flightless에 의해 완료되었습니다.
협업은 멋집니다. Action Scheduler를 개선하기 위해 여러분과 함께 일하고 싶습니다. 풀 리퀘스트 환영합니다.
후기
기여자 & 개발자
“액션 스케줄러”(은)는 오픈 소스 소프트웨어입니다. 다음의 사람들이 이 플러그인에 기여하였습니다.
기여자변경이력
3.9.2 – 2025-02-03
- ActionScheduler_Versions에서 충돌하는 메서드를 사용 중단하고 버전 정보 메서드를 새 클래스로 이동하여 치명적인 오류를 수정했습니다.
3.9.1 – 2025-01-21
- 여러 개의 새로운 WP CLI 명령어가 추가되어 터미널과 스크립트에서 작업을 더 쉽게 관리할 수 있게 되었습니다.
- Action Scheduler가 어떻게 로드되고 있는지 확인하는 데 도움을 주는 새로운 wp action-scheduler source 명령어입니다.
- Action Scheduler의 활성 인스턴스에 대한 추가 정보가 이제 도움말 풀다운 서랍에서 확인 가능합니다.
- 다른 일부 nullable 파라미터를 명시적으로 nullable로 만드세요.
- 옵션 값을 삭제하는 대신
no
로 설정하세요.
3.9.0 – 2024-11-14
- PHP의 최소 필수 버전은 이제 7.1입니다.
- `as_pending_actions_due()` 함수의 성능 개선.
- 기존 필터 훅
action_scheduler_claim_actions_order_by
가 콜백에 추가 정보를 제공하도록 개선되었습니다. - PHP 8.4와의 호환성이 개선되었습니다. 특히 암시적으로 널이 될 수 있는 파라미터를 명시적으로 널이 될 수 있도록 변경하였습니다.
- 마켓플레이스와 플러그인 디렉토리에 플러그인을 제출할 때 마찰을 줄이기 위한 많은 코딩 표준 개선 사항이 있습니다. 이 노력을 기울인 @crstauf에게 특별한 감사를 드립니다.
- 사소한 문서 수정 및 개선.
3.8.2 – 2024-09-12
pre_as_enqueue_async_action
훅에 누락된 파라미터를 추가하세요.- 최소 PHP 버전을 7.0으로 상향 조정합니다.
- 최소 WordPress 버전을 6.4로 상향 조정합니다.
- 처리 중에 배치 크기를 조정할 수 있도록 하세요.
3.8.1 – 2024-06-20
- 오타 수정.
- 식별되지 않은 작업 예외의 메시지를 개선하세요.
3.8.0 – 2024-05-22
- 문서 – perf.md의 오타를 수정했습니다.
- 업데이트 – 이제 WordPress 6.3 이상이 필요합니다.
- 업데이트 – 이제 PHP 7.0 이상이 필요합니다.
3.7.4 – 2024-04-05
- $unique 파라미터가 어떻게 작동하는지 명확하게 설명해 주세요.
- 설정된 경우 탭 필드를 보존하세요.
- 조정 – WP 6.5 호환성.
3.7.3 – 2024-03-20
- 목록 테이블에서 폼을 작성할 때 GET의 모든 항목을 반복하지 마세요.
- PCP(플러그인 체크 플러그인)에서 보고된 몇 가지 문제를 수정합니다.
- 스토어가 이를 지원하지 않더라도 작업을 고유하게 저장하려고 시도하세요.
- 조정 – WP 6.4 호환성.
- ‘Tested up to’ 태그를 WordPress 6.5로 업데이트하세요.
- package-lock.json의 버전을 업데이트하세요.
3.7.2 – 2024-02-14
_n()
번역 함수에서 더 이상 사용자 변수를 사용할 수 없습니다.
3.7.1 – 2023-12-13
- 보안 취약점으로 인해 semver를 5.7.1에서 5.7.2로 업데이트합니다.
3.7.0 – 2023-11-20
- 중요: 이번 릴리스부터 Action Scheduler는 L-2 버전 정책(WordPress 및 결과적으로 PHP)을 따릅니다.
- hook_status_scheduled_date_gmt 및 status_scheduled_date_gmt에 대한 확장 인덱스를 추가하세요.
- 액션을 생성할 수 없을 때 발생하는 예외를 포착하고 기록합니다. 예를 들어, 손상된 데이터베이스 스키마의 경우입니다.
- 조정 – WP 6.4 호환성.
- 다가오는 종속성 버전 정책에 맞춰 단위 테스트를 업데이트하세요.
- hook action_scheduler_failed_execution이 원래의 예외 객체에 접근할 수 있는지 확인하세요.
- usage.md에 의존성 버전 정책을 언급하세요.
3.6.4 – 2023-10-11
- 작업을 대량 취소할 때 성능 개선.
- 개발 관련 수정 사항.
3.6.3 – 2023-09-13
- 초기화 검사에서
_doing_it_wrong
을 사용하세요.
3.6.2 – 2023-08-09
- 인수 전달에 대한 지침 추가.
- 원자 옵션 잠금
- 대량 삭제 처리 개선.
- 예외 메시지에 데이터베이스 오류를 포함하세요.
- 조정 – WP 6.3 호환성.
3.6.1 – 2023-06-14
- 다양한 API 함수에 대한 새로운 선택적
$priority
인수를 문서화합니다. - 새로운
--exclude-groups
WP CLI 옵션을 문서화하세요. - 새로운
action_scheduler_init
훅을 문서화하세요. - 각 클레임 내의 작업이 예상된 순서대로 실행되도록 하십시오.
- 잘못된 텍스트 도메인 수정.
- 테이블이 존재하는지 확인할 때 SHOW TABLES 사용을 제거하세요.
3.6.0 – 2023-05-10
- 함수 시그니처에 $unique 파라미터를 추가하세요.
- 새로운 DateTime 객체를 생성하기 전에 추가적인 안전성을 위해 정수로 형 변환을 추가하세요.
- 일관되게 실패하는 반복 작업에 대한 예외를 허용하는 훅을 추가하세요.
- 액션 우선순위 추가.
- 초기화 훅 추가.
- 항상 시간 제한을 늘리세요.
- minimatch를 3.0.4에서 3.0.8로 업데이트합니다.
- yaml을 2.2.1에서 2.2.2로 업데이트합니다.
- 선언된 일정 유형의 격차와 관련된 방어적 코딩.
in-progress
로 설정할 수 없는 작업은 처리하지 마세요.- 필터 보기 레이블(상태 이름)은 번역 가능해야 합니다 | #919.
- WPCLI 진행 메시지 수정.
- 데이터 스토어 초기화 흐름을 개선하세요.
- 지원되는 모든 PHP 버전에서 오류 처리를 개선하세요.
- 런타임 캐시 플러시 로직을 개선합니다.
- 여러 그룹 제외 지원.
- lint-staged 및 Node/NPM 요구 사항을 업데이트하세요.
- CLI 정리 명령어 추가.
- CLI 제외 그룹 필터 추가.
- 연체 항목을 목록 테이블의 모든 필터 수에서 제외합니다.
- as_schedule_recurring_action의 간격 매개변수가 정수 유형이 아닌 경우 예외를 발생시킵니다.
3.5.4 – 2023-01-17
- 액션 회원가입 시 사전 필터를 추가하세요.
- 비동기 스케줄링
- 총 작업 수를 기준으로 타임아웃을 계산합니다.
ActionScheduler_ActionFactory
의single_unique
호출에 대한 파라미터를 올바르게 정렬하세요.- 교착 상태를 피하기 위해 클레임을 해제하기 전에 메모리에서 먼저 작업을 가져옵니다.
- PHP 8.2: 동적 속성 경고 수정을 위한 속성 선언.
- PHP 8.2: 문자열에서 ${var} 사용은 폐기 예정이므로, 대신 {$var}를 사용하세요.
$num_pastdue_actions
에 대한undefined variable
경고를 방지합니다.
3.5.3 – 2022-11-09
- 부분 일치로 쿼리 작업 수행.
3.5.2 – 2022-09-16
- 수정 – 잘못된 3.5.1 릴리스.
3.5.1 – 2022-09-13
- A/S 문서 유지보수.
- 수정: PHP 8.2 폐기 예정 알림.
3.5.0 – 2022-08-25
- 추가 – 이제 ‘도구 > 예약된 작업’ 화면 내의 활성 보기 링크를 클릭할 수 있습니다.
- 기한이 지난 작업이 있을 때 경고 추가.
- 개선 사항 – 원자적 작업을 통해 고유한 작업을 예약할 수 있는 기능이 추가되었습니다.
- 향상 – 배치 처리 시 캐시 무효화 개선 (WordPress 6.0+에서 실행 시).
- 개선 사항 – 반복되는 작업이 지속적으로 실패하는 경우, 다시 예약되지 않습니다.
- 개선 – 예약된 작업 목록 테이블에 새로운 ‘기한 초과’ 보기를 추가합니다.
3.4.2 – 2022-06-08
- 수정 – 더 나은 린팅을 위해 포함 변경.
- 수정 – 업데이트: 작업 스케줄러 완료된 작업 후크 추가.
3.4.1 – 2022-05-24
- 수정 – 더 나은 린팅을 위해 포함 변경.
- 수정 – 문서화된 반환 유형을 수정합니다.
3.4.0 – 2021-10-29
- 개선 – 예약된 작업 보기에서 페이지당 항목 수를 설정할 수 있습니다 (props @ovidiul). #771
- 수정 – max_execution_time이 이미 0(무제한)으로 설정되어 있는 경우 이를 낮추지 않음 (props @barryhughes). #755
- 수정 – 버전 해결 과정에서 자동 로더가 트리거되지 않도록 방지합니다 (props @olegabr). #731 및 #776
- Dev – ActionScheduler_wcSystemStatus PHPCS 수정 사항 (공로: @ovidiul). #761
- Dev – ActionScheduler_DBLogger.php PHPCS 수정 (공로: @ovidiul). #768
- 개발 – ActionScheduler_Schedule_Deprecated에 대한 phpcs 수정 완료 (props @ovidiul). #762
- 개발 – 작업 테이블 인덱스 개선 (props @glagonikas). #774 및 #777
- 개발 – ActionScheduler_DBStore.php에 대한 PHPCS 수정(@ovidiul 제공). #769 및 #778
- 개발 – ActionScheduler_Abstract_ListTable에 대한 PHPCS 수정(@ovidiul 제공). #763 및 #779
- 개발 – 클레임 쿼리를 조정할 수 있도록 새로운 필터 action_scheduler_claim_actions_order_by를 추가합니다 (props @glagonikas). #773
- Dev – ActionScheduler_WpPostStore 클래스에 대한 PHPCS 수정 (props @ovidiul). #780
3.3.0 – 2021-09-15
- 향상 – 기존 작업을 테스트할 수 있는 효율적인 방법을 제공하기 위해 as_has_scheduled_action()을 추가합니다. #645
- 수정 – NO_ZERO_DATE가 활성화된 환경과의 호환성을 개선합니다. #519
- 수정 – 데이터베이스 테이블을 생성할 수 없을 때 발생하는 오류를 방지하기 위한 안전 검사 추가. #645
- 개발 – 이제 여러 상태를 사용하는 쿼리를 지원합니다. #649
- 개발 – WordPress와 PHP의 최소 요구 사항이 각각 5.2와 5.6으로 상향 조정되었습니다. #723
3.2.1 – 2021-06-21
- 수정 – AS의 다양한 버전과 다른 로딩 패턴에 대한 추가 안전/계정을 추가했습니다. #714
- 수정 – 숨겨진 열 처리 (도구 예약된 작업) | #600.
3.2.0 – 2021-06-03
- 수정 – as_next_scheduled_action()에 “정렬 없음” 옵션 추가.
- 수정 – 작업을 클레임할 때 보조 예약 날짜 확인 추가 (DB스토어) | #634.
- 수정 – 작업을 클레임할 때 보조 예약 날짜 확인 추가 (wpPostStore) | #634.
- 수정 – 작업 테이블에 새로운 인덱스를 추가하여 교착 상태의 가능성을 줄입니다 (기여자: @glagonikas).
- 수정 – 단위 테스트 인프라를 수정하고 테스트를 PHP 8에 맞게 조정합니다.
- 수정 – 사용 중인 데이터 스토어 식별.
- 수정 – test_migration_is_scheduled 개선.
- 수정 – 목록 테이블에서 PHP 알림.
- 수정 – 정리 및 일괄 선택 속도 향상.
- 수정 – 대기 중인 종속성 업데이트.
- 수정 – [PHP 8.0] do_action_ref_array()에 액션 인수 값만 전달합니다.
- 수정 – [PHP 8] PHP 8 호환성을 위해 composer.json에서 PHP 버전을 7.1로 설정합니다.
- 수정 – 문서에 is_initialized() 추가.
- 수정 – 파일 권한 수정.
- 수정 – __를 esc_html__로 교체하여 #664 문제를 해결합니다.