概要
Action Scheduler を使った非同期ジョブ/バッチ処理の実装は、WordPressサイトで長時間かかる処理をバックグラウンドで実行する際に便利です。例えば、メール送信、データベース更新、外部APIへのリクエストなど、ユーザーが待たずに処理を進めることができます。
サンプルコード
// Action Scheduler を使った非同期ジョブの登録
function my_custom_async_job() {
as_schedule_single_action( time() + 3600, 'my_async_job_hook' );
}
add_action( 'init', 'my_custom_async_job' );
function my_async_job_callback() {
// ここに実行したい非同期処理のコードを書く
}
add_action( 'my_async_job_hook', 'my_async_job_callback' );
解説
- `as_schedule_single_action()` 関数を使用して非同期ジョブをスケジューリングします。第一引数に実行時刻を指定し、第二引数に処理を実行するためのフック名を指定します。
- `my_custom_async_job` 関数は WordPress の初期化時に呼び出され、`my_async_job_hook` フックが指定された時間に `my_async_job_callback` 関数が実行されます。
- `my_async_job_callback` 関数には、非同期で実行したい処理を記述します。
ベストプラクティス
- 非同期ジョブを実装する際は、処理が長時間かかる可能性があるため、サーバーリソースの消費に注意する必要があります。必要以上に頻繁にジョブをスケジュールしないようにします。
- Action Scheduler はキューイングとリトライ機能をサポートしており、処理の失敗時に自動的に再試行することができます。適切にエラーハンドリングを行い、処理の信頼性を確保しましょう。