対象読者: Moodleサイト管理者
対象バージョン: Moodle 4.x


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を実行する」cronlionly):この設定がオンになっていると、ブラウザからの/admin/cron.phpへのアクセスではCronが実行されなくなります。ブラウザからCronを実行したい場合は、この設定がオフになっていることを確認してください。
  • 「リモートアクセスのcronパスワード」cronremotepassword):パスワードを設定しておくと、URLを知っている人だけがCronを実行できるようになります。設定した場合は、以下の形式でアクセスします。
https://(あなたのMoodleサイトのURL)/admin/cron.php?password=(設定したパスワード)

ブラウザから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の通知や自動処理を安定して動かし続けることができます。定期的に「スケジュールタスク」の画面を確認し、問題が起きる前に兆候をキャッチする習慣をつけることをお勧めします。

Follow me!