액션 스케줄러

설명

Action Scheduler는 WordPress에서 대량의 작업을 배경 처리하기 위한 확장 가능하고 추적 가능한 작업 대기열입니다. 이는 특히 WordPress 플러그인에 배포되도록 설계되었습니다.

Action Scheduler는 미래의 특정 시점에 실행될 액션 훅을 트리거하여 작동합니다. 각 훅은 고유한 데이터와 함께 예약될 수 있으며, 이를 통해 콜백이 해당 데이터에 대한 작업을 수행할 수 있습니다. 또한, 훅은 한 번 또는 여러 번 실행되도록 예약될 수 있습니다.

do_action()에 대한 확장 기능으로, 훅을 지연시키고 반복할 수 있는 기능을 추가한다고 생각하세요.

전투에서 검증된 배경 처리

매달 Action Scheduler는 구독을 위한 수백만 건의 결제를 처리하고, WooCommerce를 위한 웹훅, 그리고 다양한 다른 플러그인을 위한 이메일 및 기타 이벤트를 처리합니다.

이는 라이브 사이트에서 50,000개 이상의 작업을 처리하는 큐를 처리하고, 결제 처리 및 주문 생성과 같은 리소스 집약적인 작업을 시간당 10,000개 이상 지속적으로 수행하면서도 정상적인 사이트 운영에 부정적인 영향을 미치지 않는 것으로 확인되었습니다.

이 모든 것은 플러그인 작성자의 통제 밖에 있는 인프라와 WordPress 사이트에 관한 것입니다.

플러그인이 특히 대량의 작업 세트를 배경 처리해야 하는 경우, Action Scheduler가 도움을 줄 수 있습니다.

더 알아보기

Action Scheduler가 어떻게 작동하는지, 그리고 플러그인에서 어떻게 사용하는지 더 알아보려면 ActionScheduler.org의 문서를 확인하세요.

거기에서 찾을 수 있습니다:

크레딧

Action Scheduler는 Automattic에 의해 개발 및 유지 관리되며, 초기 개발의 상당 부분은 Flightless에 의해 완료되었습니다.

협업은 멋집니다. Action Scheduler를 개선하기 위해 여러분과 함께 일하고 싶습니다. 풀 리퀘스트 환영합니다.

후기

2025년 4월 12일 답글 1개
It shows the same data that’s already available in the Scheduled Actions tab in core WooCommerce. What’s the purpose? God I waste more time with Wordpress……
2025년 3월 10일
Everything works as stated. There was a problem with hung tasks, now cron+wp cli executes everything. Other options did not work to solve the problem.
2024년 3월 18일 답글 1개
What this plugin/library adds to WordPress is incredibly powerful. It’s asynchronous execution of actions gives developers incredible possibilities. The fact that plugin developers have the option to integrate this plugin/library into their own plugins is fantastic. Keep up the good work!
2024년 3월 5일 답글 6개
Only tested it, I didnt like it, and now it wont leave. Manually removing tables – crashes my site. Sucking the life out of my server. I have to ask support for how to get rid of it. Horrible Horrible
2023년 12월 17일 답글 7개
This plugin is a classical malware:1) it acts hidden: it integrates in Wordpress core, don’t identificate itself for site owner, don’t allow any management of it’s activity or control for site owner. 2) It secretly and non-stop (every minute) allocates all server resources displacing all useful processes like processing user’s requests and all others too. It slow down site in times. From my experience “server response time” decreased from 7-8s to 1,2s just as I started to limit this malware, but I still can’t stop or remove it completely (there is no woocommerce on my site, but I believe that it were the result would be more impressive). 3) It acts as extension to Wordpress’s wp_cron service. All that it does can be done under pure wp_cron but not hidden and without slowing down site. So, it’s crear to understand that if some other plugin use Scheduled Actions it does it only to hide something from site owner eyes or/and slow down site (probably to upsale pro version that acts without Scheduled Actions. 4) There is no way how to completely stop neither uninstall it neither remove it’s actions neither it’s wp_cron task. 5) It’s impossible just to short circle some functions in it to stop it’s working – it’s code made the way that it break site down if someone try to stop it. I have found the way to limit it’s activity but can’t stop it completely. 6) All question to developers regarding this behavior return with answer like “it runs as we wish, keep enjoying slow down your site” or buy our other plugins or employ us to find why your site is slow down. Explanations about clear difference with Scheduled Actions working as they with and limited they just ignore. I strictly advice plugin developer run a mile of this malware otherwise site owners have to remove already your plugins accusing already you in the fatal slow of their sites and probably with criminal charge (at least in EU).
모든 13 평가 읽기

기여자 & 개발자

“액션 스케줄러”(은)는 오픈 소스 소프트웨어입니다. 다음의 사람들이 이 플러그인에 기여하였습니다.

기여자

“액션 스케줄러”(이)가 4 개 언어로 번역되었습니다. 기여해 주셔서 번역자님께 감사드립니다.

자국어로 “액션 스케줄러”(을)를 번역하세요.

개발에 관심이 있으십니까?

코드 탐색하기는, SVN 저장소를 확인하시거나, 개발 기록RSS로 구독하세요.

변경이력

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_ActionFactorysingle_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 문제를 해결합니다.