UnixまたはLinuxを使用するCron

提供:MoodleDocs
移動先:案内検索

UnixおよびLinuxでは、ほぼすべてのシステムで標準となっている組み込みの cron プログラムを使用します。 Webサーバユーザの 'crontab'(cronコマンドを保持するテーブル)にコマンドを追加する必要があります。

Moodlecronプロセスを呼び出すために使用できる2つの異なる方法があります:

注: 表示されているコマンドを機能させるには、crontabに追加する必要があります(後で説明します)。ただし、コマンドラインで実行して、最初に機能することを確認することはできます。

方法1:コマンドライン(cli)cron

選択肢がある場合、これは通常、Moodlecronを実行するための最良の方法です。

PHPは、コマンドラインから直接プログラムを実行することもできます。これを行うには、システムを設定する必要があります。具体的には、PHPの 'CLI' バージョンをインストールする必要があります。 PHPがインストールされているほとんどのシステムには、デフォルトでこれがあります。 PHP CLIバージョンがインストールされている場合、これはcronを呼び出すための推奨される方法です。正しいコマンドは次のようになります...

/usr/bin/php /path/to/moodle/admin/cli/cron.php

(必要に応じて、moodleおよびphpの正しいパスに置き換えてください)

コマンドラインにthisと入力するだけで、機能するかどうかを確認できます。 PHPへのパスがわからない場合は、"which php" と入力できます。

ヒント: 問題がある場合は、PHPページを参照してください。特に、適切な設定がない可能性のあるCLIPHPコマンドの代替php.iniを疑ってください。

方法2:Webベースのcron

注: Webベースのcronスクリプトを使用するには、最初にCron設定をチェックして、このメソッドが許可されていることを確認する必要があります。

アイデアは、次のWebページを呼び出すことです(ブラウザーからこれを試すことができます)。

http://url.of.your/moodle/admin/cron.php


サーバでこれを実行するには、コマンドライン(テキストベース)ブラウザが必要です。可能性は次のとおりです(たとえば、OSXはカール付きでのみ出荷されます)...

/usr/bin/wget -q -O /dev/null/ http://url.of.your/moodle/admin/cron.php

(出力は表示されません-テストするには -O/dev/null/ を削除してください)

...または...

/usr/bin/curl http://url.of.your/moodle/admin/cron.php -o /dev/null/ -silent

(出力は表示されません-テストするために -o/dev/null/-silent を削除してください)

Unix / Linuxでのcrontabプログラムの使用

Moodle cronを呼び出すための適切なコマンドを選択(およびテスト!)したら、それをWebユーザの 'crontab' に追加して、定期的に実行するようにスケジュールする必要があります。 'Crontab' は、ユーザのcronコマンドを含むファイルであり、編集に使用される(コマンドライン)プログラムの名前でもあります。次のコマンドを(rootとして)使用して、'www-data' の代わりに正しいユーザを使用します(たとえば、Centosの場合は 'apache'、Debian/Ubuntuの場合は 'www-data'、macOSの場合は '_www' -Googleが認識します!)

# crontab -u www-data -e

これにより、エディタウィンドウが表示されます(初めて使用するエディタを尋ねられる場合があります)。この方法でファイルの最後にコマンドを追加します(空の場合もあれば、説明コメントがある場合もあります)。

 */1 * * * * /usr/bin/php  /path/to/moodle/admin/cli/cron.php >/dev/null

最初の5つのエントリは、実行する時間を指定し、その後にコマンドが続きます。これは、コマンドを毎分実行することを意味しますが、通常は問題ありません。ホストされているシステムでは、あまり頻繁に実行しないと苦情が出る場合があります(たとえば、2時間ごとに実行するには、最初の5つのエントリに '0 */2 * * *' を使用します)。 wget/curlバージョンを使用する場合は、最初の5つのエントリは同じままです。コマンド部分を変更するだけです。

高性能cronタスク

cronが実行されるたびに、スケジュールされたタスクの後にアドホックタスクも実行されます。ただし、アドホックタスクはいつでもキューに入れることができ、通常はできるだけ早く処理し、スケジュールされたタスクが最初に実行されるのを待つ必要がないようにします。 1つ以上の専用アドホックタスクプロセッサを実行できます。

 * * * * * /usr/bin/php  /path/to/moodle/admin/cli/adhoc_task.php --execute >/dev/null

Moodle 3.9以降、キューが空のときに新しいタスクを待っているときに生き続けるように指示できます。

 * * * * * /usr/bin/php  /path/to/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59 >/dev/null

アドホックタスクまたはスケジュールされたタスクの数が非常に少ない場合は、複数のcron.phpおよびadhoc_task.phpプロセスを生成して、スループットを向上させることもできます。デフォルトでは、Moodleは常に3つ以下のプロセスが実行されることを確認します。必要に応じて、サイト管理 > サーバ > タスク > タスク処理でこれらの制限を調整できます。

関連項目