cron

Moodleの 'cron'プロセスはPHPスクリプト(標準のMoodleインストールの一部)であり、バックグラウンドで定期的に実行する必要があります。 Moodle cronスクリプトは異なるタスクを異なる間隔で実行します。

重要:あなたのMoodle用にあなたのサーバ上でcronプロセスを設定することをスキップしないでください。あなたのサイトはそれなしでは正しく機能しません。

ごみ箱を使用するときの非同期活動の削除に必要なので、cronを毎分実行することをお勧めします。

(Moodleスクリプトを実行する)cronプログラムは、あらゆる種類の時間依存サービスを実行するために使用されているUnixベースのシステム(LinuxおよびOSXを含む)の中核部分です。 Windowsでは、最も簡単な解決策は、Windowsタスクスケジューラでタスクを作成し、それを定期的に実行するように設定することです。共有ホスティングでは、cronがどのように設定されているかのドキュメントを見つける(またはサポートに問い合わせる)べきです。ほとんどの共有ホスティングシステムはCPanelを使用してサイトを管理しており、通常はパネルにCron Jobsのセクションがあります。

基本的に、タスクはあなたのシステムのcron活動のリストに単一のコマンドを追加することを含みます。 Unixベースのシステムでは、このリストはすべてのユーザーが持っている 'crontab'と呼ばれるファイルです。

一般的なディスカッション

サーバーの種類については後のセクションを参照してください。このセクションには、いくつかの一般的な背景情報が含まれています。

cronを実装するには、基本的に2つのステップがあります。

  1. 実行する正しいコマンドを識別する
  2. あなたのシステム上でコマンドを置くための正しい場所を見つける

Moodle cronコマンドを実行する

Moodleは、Moodleインストール内で異なるスクリプトを使用するcronをデプロイするための2つの異なる方法を持っています。これらは以下の通りです...

  1. CLI(コマンドラインインタプリタ)スクリプトこれはパスになります
     /path/to/moodle/admin/cli/cron.php 
    よくわからない場合は、これが正しいスクリプトです。これはあなたのコンピュータ上の 'PHP CLI'プログラムによって実行される必要があります。したがって、最後のコマンドは次のようになります。
     / usr / bin / php /path/to/moodle/admin/cli/cron.php 
    それが機能するかどうかを確認するためにあなたのコマンドラインでこれを試すことができます(そしてそうすべきです)。 警告:あなたのコマンドラインPHPバージョンがあなたが選択したバージョンのMoodleと互換性があることを確認してください。 PHPのコマンドラインプログラムは、Webサイトを実行しているプログラムとは異なり、必ずしも同じバージョンではありません。
  2. 何らかの理由でCLIスクリプトを実行できない場合は、Webベースのスクリプトがあります。これは現在推奨されておらず、将来のバージョンで削除される可能性があることに注意してください。これはWebブラウザから実行する必要があり、 https://your.moodle.site/admin/cron.phpのようなWeb URLを介してアクセスされます。あなたはコマンドラインベースのウェブブラウザ(例えばwget)を見つけることができるので、最終的なコマンドは以下のようになるでしょう。
     / usr / bin / wget https://your.moodle.site/admin/cron.php 
    これは*どこからでも実行できるという利点があります。あなたのマシン上でcronを動かすことができないなら、それはどこか他のところで走らせることができます。

WebベースのMoodle cronコマンド

  • 選択肢がある場合は、Webベースのcronを使用しないでください。将来のMoodleバージョンでは削除される可能性があります。
  • Moodle 2.9以降、cronジョブはデフォルトでウェブから実行できなくなりました。エラーメッセージが表示されます。
 !!!このページへのインターネットアクセスは管理者によって無効にされています。 !!! 
  • これを変更するには、[サイトの管理]►[セキュリティ]►[サイトのセキュリティ設定]で[コマンドラインからのみcron実行]の選択を解除します。
    • あなたは 'ウェブブラウザからcronを実行すると匿名ユーザーに特権情報を公開することができることを警告されるでしょう。したがって、コマンドラインからcronを実行するか、リモートアクセス用のcronパスワードを設定することのみをお勧めします。
    • その後、「リモートアクセス用のCronパスワード」を書くことができます。このフィールドを空白のままにした場合、パスワードは不要です。
    • つまり、cron.phpスクリプトは、次の形式のURLを使用してパスワードを入力せずにWebブラウザから実行することはできません。
 https://site.example.com/admin/cron.php?password=opensesame

コマンドを配置するための適切な場所を見つける

これは本当にあなたが使っているシステムに依存します、そしてあなたはあなたのプラットフォームやホスティングのためのドキュメントを見つけて読むべきです。ほとんどの場合、Moodlecronを実行させるには、正しいコマンドを設定してからそれを追加し、次にコマンドを実行する時間を何らかの種類のファイルに追加します。これは、特定のユーザーインターフェイスを介しているか、ファイルを直接編集している可能性があります。

CLIバージョンを使用している場合は、cronプロセスが正しいユーザーとして実行されていることも確認する必要があります。これはWeb版の問題ではありません。

例... Ubuntu / Debian Linuxにcronをインストールする。 rootとしてログインしたと仮定します。

www-dataユーザー用のcrontabエディターウィンドウを開くには、crontabコマンドを使用します。これは、Apache(ウェブサーバ)がDebianベースのシステムで動作するユーザです。

$ crontab -u www-data -e

これによりエディタウィンドウが開きます。 1分ごとにcl cronスクリプトを実行するには、次の行を追加します。

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

注:最後の> / dev / nullは、すべての出力を 'bin'に送信し、1分ごとにEメールが届くのを防ぎます。

システムにcronを設定する

サーバータイプの情報を選択してください。

特定のホストに関する追加の指示があります(これらが最新であることを確認してください)。

サードパーティのcronサービスを使用する

あなた自身のサーバーでホストされているcronを使う以外に、あなたはサードパーティのcronサービス(通常webcronと呼ばれる)を使うことができます:

  • cron-job.orgは無料サービスです。 (1分cron可能)
  • EasyCron - cronジョブを設定するためのcrontabまたは他のタスクスケジューラの必要性を排除するWebcronサービスプロバイダ。

Moodleのcron設定

管理者は、サイト管理の[サイトセキュリティ設定]で、リモートアクセス用のコマンドラインのみまたはcronパスワードを使用してcron実行を設定できます。

リモートcron

Webベースのバージョンのcronを使用して、cronプロセスをMoodleサーバとは異なるマシンに配置しても問題ありません。例えば、Unixサーバ上のcronサービスは、WindowsベースのMoodleサーバ上のcronウェブ 'page'を呼び出すことができます。

スケジューリングタスク

管理者が参照、管理>サイトの管理>サーバー>スケジュールされたタスクから非常に正確にcronタスクのスケジュールを設定することができますスケジュールされたタスクを

複数のMoodleサーバ用の実行cron

  • タスクは並行して実行することができ、プロセスはロックを使用してタスクが同時に実行されないようにします。これにより、同じMoodleインスタンスを提供する複数のウェブサーバーからcronがトリガーされることが可能になります。
  • 同じサーバー上で異なるMoodleインスタンスを実行している場合、各Moodleインスタンスにはcronジョブが必要です。 (単一のApacheウェブサーバでさえ、その仮想ホスト機能https://httpd.apache.org/docs/2.2/vhosts/index.htmlを使用することによって、異なるドメイン上で異なるMoodleインスタンスを実行することができます 。)

スケジュールされたタスクのデバッグ

場合によっては、特定のcron・タスクが正しく機能していない可能性があります。 2.7より前のMoodleバージョンでは - 例外を投げていたcronタスクはcronの残りが実行されるのを妨げるでしょう。 cronが毎回完了しているかどうかを監視する唯一の方法は、実行中のcronの出力の自動チェックを追加することです(たとえば、文字列 "Cron completed at"を検索する)。

Moodle 2.7以降では、1つの失敗したスケジュールタスクが残りのタスクの完了を妨げることはありません。いずれかのスケジュールされたタスクが失敗すると、それは失敗としてマークされ、再試行されるようにスケジュールされます。タスクが失敗し続ける場合は、最大24時間に1回試行されるまで、次のスケジュールされた時間がバックオフされます。しかし、 Scheduled tasks管理ページをチェックすると、現在失敗しているタスクがあるかどうかを確認できます(失敗の遅延がゼロ以外になる - 失敗したタスクを再試行するまでに待機する秒数です)。失敗したタスクをデバッグする簡単な方法は、 cliのスケジュールされたタスクランナーを使ってすぐにそれを実行し、出力を監視することです。

関連情報

フォーラムディスカッション: