MoodleをAWS上で構築しています。Moodleの運用に欠かせないのがcron.phpの定期的な実行です。
Moodleが用意しているcron.phpがMoodleを運用していく上で欠かせないことをやってくれます。
Moodleのcron.phpとは
cronは必要な機能を定期的に実行することができるスケジューリングタスクです。Moodleではこのcron.phpを動かして運用するのが前提となっています。
- Moodleデータベース内のmdl_modulesテーブルを調べて、定期的にcron機能が実行される
- モジュールディレクトリ内にあるlib.phpファイルのcron関連の関数を実行する
- mdl_blockテーブルにあるcron関連の関数を定期的に実行する
- Moodleのクリーンアップ機能
- メール機能
- コースバックアップの自動化長期間ログインしていない学生の削除
- 古いログファイルの削除
Moodleのcron.phpの動かし方
cron.phpの場所
cron.phpはmoodleディレクトリ以下、adminフォルダの中にあります。場所を確認して動かします。

このコマンドを動かす前に実際に動いたときのログをファイルに取っておきたい。そのためテキストに実行ログをリダイレクトさせます。
cron.phpが動いたときのログファイルを用意する
・/var/log 以下に「cronlog.log」というログファイルを作る
・作ったログファイルを書き込めるように書き込み権限を与える
で、作ったログファイルに実行ログが出力されるようにcron.phpを実行します。

実行後、コンソールの様子。SMTPの設定をしていないのでエラーが出ています。

/var/log/cronlog.logの内容
実行した結果が/var/log/cronlog.logに出力されます。
Execute scheduled task: 古いセッションを削除する (core\task\session_cleanup_task)
… started 12:24:41. Current memory use 15.5MB.
… used 8 dbqueries
… used 0.015720129013062 seconds
Scheduled task complete: 古いセッションを削除する (core\task\session_cleanup_task)
Execute scheduled task: 確認未了のユーザを削除する (core\task\delete_unconfirmed_users_task)
… started 12:24:41. Current memory use 16.8MB.
… used 1 dbqueries
… used 0.00033712387084961 seconds
Scheduled task complete: 確認未了のユーザを削除する (core\task\delete_unconfirmed_users_task)
Execute scheduled task: 不完全なユーザを削除する (core\task\delete_incomplete_users_task)
… started 12:24:41. Current memory use 16.8MB.
・・・・・・・
実行ログからもわかるように、古いセッションや登録途中で終わってしまっている中途半端なユーザーの削除など、お掃除を実施してくれています。
Moodle上にも実行結果が表示
cron.phpを実行すると、Moodleの管理画面からも実行ログを確認することができます。『サイト管理>サーバ>タスク>タスクログ』でタスクログを確認します。

cronを定期的に実行する
cron.phpをcron内に設定し、定期的に実行するようにします。crontab -e 編集画面を表示します。


Moodle上の設定
cron.phpでどのタスクが実行するかをMoodle上で設定することができます。『サイト管理>サーバ>タスク>スケジュールタスク』で設定できます。
