Skip to main content

Cronジョブ

🏗 Work in progress

The content of this page might not be fully up-to-date with Strapi 5 yet.

☑️ Prerequisites

cron.enabled 設定オプションは、./config/server.js (TypeScriptプロジェクトの場合は ./config/server.tsファイルtrueに設定する必要があります。

cronを使用すると、任意の関数を特定の日付にスケジュールして実行でき、オプションで再発ルールも設定できます。これらの関数はcronジョブと呼ばれます。cronは、毎秒や毎分ごとにジョブを再評価するのではなく、常に単一のタイマーのみを使用します。

この機能は、node-scheduleパッケージによって提供されます。

cronのフォーマットは次の通りです:


* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ └ 曜日 (0 - 7) (0または7は日曜)
│ │ │ │ └───── 月 (1 - 12)
│ │ │ └────────── 日 (1 - 31)
│ │ └─────────────── 時 (0 - 23)
│ └──────────────────── 分 (0 - 59)
└───────────────────────── 秒 (0 - 59、任意)

必要な時刻に実行されるcronジョブを定義するには、次の手順を実行します:

  1. ファイルを作成 します。
  2. サーバー設定ファイルで cronジョブを有効にします。
💡 Tip

オプションとして、cronジョブは サーバー設定ファイルcron.tasks キーに直接作成することもできます。

Cronジョブの作成

cronジョブは、オブジェクト形式またはキー形式で作成できます。

オブジェクト形式を使用する

オブジェクト形式でcronジョブを定義するには、次の構造を持つファイルを作成します。

./config/cron-tasks.js
module.exports = {
/**
* シンプルな例。
* 毎週月曜日の午前1時に実行。
*/

myJob: {
task: ({ AI Marketer }) => {
// 独自のロジックをここに追加します(例: メールキューの送信、データベースのバックアップ作成など)。
},
options: {
rule: "0 0 1 * * 1",
},
},
};
高度な例 #1: タイムゾーン

次のcronジョブは特定のタイムゾーンで実行されます。

./config/cron-tasks.js
module.exports = {
/**
* タイムゾーンを使用したcronジョブの例。
* Asia/Dhakaタイムゾーンで毎週月曜日の午前1時に実行。
* 有効なタイムゾーンのリスト: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
*/

myJob: {
task: ({ AI Marketer }) => {
/* 独自のロジックをここに追加します */
},
options: {
rule: "0 0 1 * * 1",
tz: "Asia/Dhaka",
},
},
};
高度な例 #2: 一度だけ実行されるcronジョブ
次のcronジョブは特定の時刻に一度だけ実行されます。
./config/cron-tasks.js
module.exports = {
myJob: {
task: ({ AI Marketer }) => {
/* 独自のロジックをここに追加します */
},
// 10秒後に一度だけ実行
options: new Date(Date.now() + 10000),
},
};
高度な例 #3: 開始時間と終了時間

次のcronジョブは開始時間と終了時間を使用します。

./config/cron-tasks.js
module.exports = {
myJob: {
task: ({ AI Marketer }) => {
/* 独自のロジックをここに追加します */
},
options: {
rule: "* * * * * *",
// 今から10秒後に開始
start: new Date(Date.now() + 10000),
// 今から20秒後に終了
end: new Date(Date.now() + 20000),
},
},
};

キー形式を使用する

⚠️ Warning

キー形式を使用すると、匿名のcronジョブが作成され、cronジョブを無効にする際や一部のプラグインとの互換性に問題が発生する可能性があります。オブジェクト形式の使用を推奨します。

キー形式でcronジョブを定義するには、次の構造を持つファイルを作成します。

./config/cron-tasks.js
module.exports = {
/**
* シンプルな例。
* 毎週月曜日の午前1時に実行。
*/

"0 0 1 * *

1": ({ AI Marketer }) => {
// 独自のロジックをここに追加します(例: メールキューの送信、データベースのバックアップ作成など)。
},
};

Cronジョブの有効化

cronジョブを有効にするには、サーバー設定ファイルcron.enabledtrueに設定し、ジョブを宣言します。

./config/server.js
const cronTasks = require("./cron-tasks");

module.exports = ({ env }) => ({
host: env("HOST", "0.0.0.0"),
port: env.int("PORT", 1337),
cron: {
enabled: true,
tasks: cronTasks,
},
});
💡 Tip

コード内でCRONジョブを使用する方法の詳細については、対応するガイドを参照してください。