対象読者: Moodleサイト管理者
対象バージョン: Moodle 4.x
- 1. Cronとは何か
- 2. Cronが動いているかを確認する方法
- 2.1. サイト管理画面から確認する
- 2.2. Cronの最終実行時刻を確認する
- 3. ブラウザでCronを動かす
- 3.1. 実行URL
- 3.2. セキュリティに関する注意
- 4. ブラウザでCronを動かす必要があるのはどんなとき?
- 4.1. 1. サーバーのCron設定ができない環境
- 4.2. 2. 動作確認・トラブルシューティング
- 4.3. 3. 特定のタスクをすぐに実行したいとき
- 5. Cronの実行間隔
- 5.1. 公式推奨は1分
- 5.2. 「Cronが詰まる」問題とは
- 5.3. 各スケジュールタスクの実行頻度を見直す
- 5.3.1. Cronスケジュールの設定
- 5.4. Cronの間隔を延ばす場合
Cronとは何か
「Cron(クロン)」とは、あらかじめ決められた時間や間隔で処理を自動実行する仕組みのことです。もともとはLinux/Unixのシステム用語ですが、Moodleでも同様の概念でバックグラウンド処理を管理しています。
Moodleでは、以下のような処理がCronによって定期的に実行されています。
- コース登録の期限切れ処理
- 通知メールの送信
- バッジの発行
- レポートや統計データの集計
- コーホート同期
- バックアップの自動実行
これらはユーザーが画面を操作したときではなく、Cronが動いたタイミングで初めて処理されます。つまり、CronはMoodleを正常に動かすために欠かせない仕組みです。
Cronが動いているかを確認する方法
サイト管理画面から確認する
管理者は以下の手順でCronの動作状況を確認できます。
「サイト管理」→「サーバー」→「タスク」→「スケジュールタスク」

ここでは各スケジュールタスクの一覧が表示され、それぞれについて以下の情報が確認できます。
- 最近の実行:最後にそのタスクが実行された日時
- 次の実行:次にそのタスクが実行される予定日時
- 分・時・日・曜日・月:タスクの実行スケジュール設定
「最近の実行」の日時が長期間更新されていないタスクがある場合は、Cronが正常に動作していない可能性があります。
Cronの最終実行時刻を確認する
「サイト管理」→「レポート」→「システムステータス」

ここに「Cronが最後に実行された時刻」が表示されます。ここに表示されている時刻が現在時刻から大きくかけ離れている場合は、Cronが止まっている可能性があります。
ブラウザでCronを動かす
本来Cronは、サーバー側のスケジューラー(LinuxのCrontabなど)から定期的に呼び出して実行します。しかし、サーバーの設定ができない環境や、テスト目的で手動実行したい場合は、ブラウザからURLを直接入力してCronを実行する方法があります。
実行URL
https://(あなたのMoodleサイトのURL)/admin/cron.php
このURLにアクセスすると、Cronの処理がその場で実行され、実行ログがブラウザ上に表示されます。
ブラウザでCronを動かす必要があるのはどんなとき?
ブラウザからCronを手動実行するのは、主に以下のような場面です。
1. サーバーのCron設定ができない環境
共有レンタルサーバーなど、Crontabを自由に設定できないホスティング環境では、ブラウザからCronを実行する方法が唯一の選択肢になることがあります。ただしこの場合、誰かがURLにアクセスしない限りCronは動かないため、運用上の課題があります。
2. 動作確認・トラブルシューティング
「通知が届かない」「コーホート同期が反映されない」といった問題が発生したとき、ブラウザからCronを手動実行してみることで、処理が正常に走るかどうかを確認できます。
3. 特定のタスクをすぐに実行したいとき
スケジュールタスクの画面から個別タスクを手動実行することもできますが、ブラウザからCronを実行することで全タスクをまとめて処理させることができます。
Cronの実行間隔
公式推奨は1分
Moodle公式ドキュメントでは、Cronを1分ごとに実行することを推奨しています。これは、通知の即時送信・締切リマインダー・各種スケジュールタスクをできるだけリアルタイムに近い形で処理するためです。
「Cronが詰まる」問題とは
しかしながら、運用していると、「前のCronの処理が終わらないうちに次のCronが始まってしまい、処理が積み重なって重くなる」という問題が発生することがあります。これを「Cronが詰まる」と表現することがあります。
各スケジュールタスクの実行頻度を見直す
Cronが詰まったときは、個々のスケジュールタスクの実行頻度を見直しましょう。
「サイト管理」→「サーバー」→「タスク」→「スケジュールタスク」

各タスクには個別に実行間隔が設定されており、必要以上に高頻度で動いているタスクがあれば、そこを調整するほうが効果的です。
たとえば
- バックアップタスクが毎時実行されているなら、1日1回に変更する
- 大量データを処理するレポート集計タスクの頻度を下げる
こうした個別の調整によって、Cronの処理負荷を分散・軽減できます。
Cronスケジュールの設定

| 列 | 値 | 意味 |
|---|---|---|
| 分 | 6 | 毎時6分に実行 |
| 時 | 2 | 午前2時に実行 |
| 日 | * | 毎日 |
| 月 | * | 毎月 |
| 曜日 | 5 | 金曜日に実行 |
この例を組み合わせると、「毎週金曜日の午前2時6分に実行」という意味になります。
*は「すべて」を意味し、RはMoodleがランダムに設定した値(サーバー負荷を分散するため、タスクごとにずらして実行するためのもの)です。
Cronの間隔を延ばす場合
個々のタスク設定を見直したうえで、それでも処理が重い場合は、Cronの実行間隔を環境に合わせて延ばすことも選択肢のひとつです。ただし、以下の点に注意が必要です。
| Cronの間隔 | メリット | デメリット |
|---|---|---|
| 1分(公式推奨) | 通知・処理のリアルタイム性が高い | 処理が重い環境では負荷が高くなりやすい |
| 5〜15分 | 負荷をある程度抑えられる | 通知などに若干の遅延が生じる |
| 15〜30分以上 | 処理の重複リスクが下がる | 通知の遅延が目立つ場合がある |
Cronが頻繁に詰まる場合は、サーバーのスペック(メモリ・CPU)やMoodleの設定(PHPのメモリ制限など)も合わせて確認することをお勧めします。
Cronを正しく理解し、適切に運用することで、Moodleの通知や自動処理を安定して動かし続けることができます。定期的に「スケジュールタスク」の画面を確認し、問題が起きる前に兆候をキャッチする習慣をつけることをお勧めします。

