「Cron」の版間の差分

提供:MoodleDocs
移動先:案内検索
(Done ... long climb. :^)
 
(同じ利用者による、間の38版が非表示)
1行目: 1行目:
作成中です - [[利用者:Mitsuhiro Yoshida|Mitsuhiro Yoshida]] 2008年6月27日 (金) 11:16 (CDT)
Cronでは、定期的なMoodleモジュールの実行を支援します。例えば、すべてのディスカッションフォーラムをチェックして、フォーラムをメール購読しているユーザに対して、新しい投稿のコピーをメール送信します。
Cronでは、定期的なMoodleモジュールの実行を支援します。例えば、すべてのディスカッションフォーラムをチェックして、フォーラムをメール購読しているユーザに対して、新しい投稿のコピーをメール送信します。


すべての処理を実行するMoodleの主要なスクリプトは、adminディレクトリに置かれ、cron.phpと呼ばれます。スクリプト自体は自分で動作することができませんので、あなたはスクリプトを定期的に実行する仕組み (例 5分または10分毎) を設定する必要があります。それぞれのモジュールで定義された機能をスクリプトが実行できるよう、Cronは「心臓の鼓動 (hearbeat)」を提供します。この種の定期的なメカニズムは「Cronサービス」として知られています。サービスは、ウェブホストの一部、または異なるサーバまたはコンピュータで実行することができます。
すべての処理を実行するMoodleの主要なスクリプトは、adminディレクトリに置かれ、cron.phpと呼ばれます。スクリプト自体は自分で動作することができませんので、あなたはスクリプトを定期的 (例 5分または10分毎) に実行する仕組みを設定する必要があります。それぞれのモジュールで定義された機能をスクリプトが実行できるよう、Cronは「心臓の鼓動 (hearbeat)」を提供します。この種の定期的なメカニズムは「Cronサービス」として知られています。サービスは、ウェブホストの一部、または異なるサーバまたはコンピュータで実行することができます。


==Cronの概要==
==Cronの概要==
===スクリプトの概要===
===スクリプトの概要===


cron.phpスクリプトは、Moodleのモジュールに関する、Moodleデータベース内のmdl_modulesテーブル (デフォルトテーブル接頭辞が mdl_ と仮定して) を調べて、定期的にcron機能が実行されるようにします。そして、それぞれのモジュールディレクトリ内にあるlib.phpファイルから「モジュール名_cron」の関数を探して、実行します。また、mdl_blockテーブルを調べて、cronメソッド (オブジェクト関数) が定期的に実行されるようにします。そして、それぞれのブロックから、そのブロックに関係する新しいオブジェクトのため、cronメソッドを実行します (プログラマーではない人のため、私は詳細説明を省略しています。プログラマーは、自分で admin/cron.phpを読めますから)。これらのファイル (lib.phpファイルおよびブロックのクラスが定義されているファイル) には、クリーンアップ機能、メール機能および定期的に実行する必要な機能を組み込むことができます。例えば、「管理 > コースバックアップ」で指定された時間にコースバックアップを作成するため、cronはシステムにトリガー (きっかけ) を与えます。また、cronはメッセージモジュールまたはフォーラム投稿通知に対してトリガーを与えますが、cronの実行されるたびに、すべての機能がコールされるわけではありません。長期間ログインしていない学生の削除、古いログファイルのコピーの削除等、いくつかの機能は時々実行されるだけです。cron.phpファイルには、cron実行の1/5の割合で、これらのコアタスクをランダムに実行するためのセクションがあります。
cron.phpスクリプトは、Moodleのモジュールに関する、Moodleデータベース内のmdl_modulesテーブル (デフォルトのテーブル接頭辞が mdl_ と仮定して) を調べて、定期的にcron機能が実行されるようにします。そして、それぞれのモジュールディレクトリ内にあるlib.phpファイルから「モジュール名_cron」の関数を探して、実行します。また、mdl_blockテーブルを調べて、cronメソッド (オブジェクト関数) が定期的に実行されるようにします。そして、それぞれのブロックから、そのブロックに関係する新しいオブジェクトのため、cronメソッドを実行します (プログラマーではない人のため、私は詳細説明を省略しています。プログラマーは、自分で admin/cron.phpを読めますから)。これらのファイル (lib.phpファイルおよびブロックのクラスが定義されているファイル) には、クリーンアップ機能、メール機能および定期的に実行する必要な機能を組み込むことができます。例えば、「管理 > コースバックアップ」で指定された時間にコースバックアップを作成するため、cronはシステムにトリガー (きっかけ) を与えます。また、cronはメッセージモジュールまたはフォーラム投稿通知に対してトリガーを与えますが、cronが実行されるたび、すべての機能がコールされるわけではありません。長期間ログインしていない学生の削除、古いログファイルの削除等、いくつかの機能は時々実行されるだけです。cron.phpファイルには、cron実行の1/5の割合で、これらのコアタスクをランダムに実行するためのセクションがあります。


===Cronサービスロケーションおよびタイミング===
===Cronサービスロケーションおよびタイミング===
17行目: 15行目:
===Cronのテストおよびマニュアルトリガー===
===Cronのテストおよびマニュアルトリガー===


あなたのブラウザから直接スクリプトが動作するか、最初にテストしてください: ''<nowiki>http://example.com/moodle/admin/cron.php</nowiki>''
あなたのブラウザから直接スクリプトが動作できるか、最初にテストしてください: ''<nowiki>http://example.com/moodle/admin/cron.php</nowiki>''


あなたのMoodleにログインしているユーザから、コマンドラインでcronが実行された場合、cronを実行するため、一時的に管理者環境が作成され、そのユーザはログアウトされます。cron.phpファイルを無効にすることで、コマンドラインによるcron.php実行を停止することができます。
あなたのMoodleにログインしているユーザから、コマンドラインでcronが実行された場合、cronを実行するため、一時的に管理者環境が作成され、そのユーザはログアウトされます。cron.phpファイルを無効にすることで、コマンドラインによるcron.php実行を停止することができます。
27行目: 25行目:
WindowsシステムでMoodleのcron.phpを設定するには、異なる2つの方法があります:
WindowsシステムでMoodleのcron.phpを設定するには、異なる2つの方法があります:


*'''Moodle Cronパッケージ'''を使用する。最も簡単な方法は、Moodleに関するWindowsサービスをインストールしてくれる、この小さなパッケージ「[http://download.moodle.org/download.php/sourceforge/MoodleCron-Setup.exe MoodleCron-Setup.exe]」を使用することです。このパッケージを実行した後は、すべて忘れましょう!
*'''Moodle Cronパッケージを使用する''' 最も簡単な方法は、Moodleに関するWindowsサービスをインストールしてくれる、この小さなパッケージ「[http://download.moodle.org/download.php/sourceforge/MoodleCron-Setup.exe MoodleCron-Setup.exe]」を使用することです。このパッケージを実行した後は、すべて忘れましょう!
*'''スケジュールタスク'''を使用する。あなたがWindowsスケジューラを使用したい場合、またはmoodle-cron-for-windowsパッケージに問題がある場合、スケジュールタスクを設定することで、Windows用のwgetを使用するか、コマンドラインでphpを使用することができます。以下の手順に従ってください:
*'''スケジュールタスクを使用する''' あなたがWindowsスケジューラを使用したい場合、またはmoodle-cron-for-windowsパッケージに問題がある場合、スケジュールタスクを設定することで、Windows用のwgetを使用するか、コマンドラインでphpを使用することができます。以下の手順に従ってください:
** '''php.exe/php-win.exe (コマンドラインバイナリ)''' または '''wget''' を選択する。
** '''php.exe/php-win.exe (コマンドラインバイナリ)''' または '''wget''' を選択する。
::あなたのphpフォルダ (例. c:\php) にインストールされているphp.exeまたはphp-win.exeバイナリ (PHP version 5以降) は、cronスクリプトの動作に対して良いパフォーマンスをもたらします。
::あなたのphpフォルダ (例. c:\php) にインストールされているphp.exeまたはphp-win.exeバイナリ (PHP version 5以降) は、cronスクリプトの動作に対して良いパフォーマンスをもたらします。
36行目: 34行目:
:: - ウィザードを開始するには、「次へ (N) >」をクリックしてください。
:: - ウィザードを開始するには、「次へ (N) >」をクリックしてください。
:: - 「参照 (R) ...」ボタンをクリックして、 c:\php\php.exe または c:\windows\wget.exe を選択した後、「開く (O)」をクリックしてください。
:: - 「参照 (R) ...」ボタンをクリックして、 c:\php\php.exe または c:\windows\wget.exe を選択した後、「開く (O)」をクリックしてください。
:: - タスク名に「Moodle Cron」と入力した後、タスクの実行に「日単位 (D)」を選択した後、「次へ (N) > 」をクリックしてください。
:: - タスク名に「Moodle Cron」と入力して、タスクの実行に「日単位 (D)」を選択した後、「次へ (N) > 」をクリックしてください。
:: - 開始時刻に「12:00」を選択して、このタスクの実行に「毎日 (A)」を選択してください。開始日に今日の日付を選択した後、「次へ (N) > 」をクリックしてください。
:: - 開始時刻で「12:00」を選択して、このタスクの実行に「毎日 (A)」を選択してください。開始日に今日の日付を選択した後、「次へ (N) > 」をクリックしてください。
:: - タスクを実行するユーザ名およびパスワードを入力してください (管理者権限を持つアカウントである必要はありません)。パスワードを正しく入力したことを確認して、「次へ (N) > 」をクリックしてください。
:: - タスクを実行するユーザ名およびパスワードを入力してください (管理者権限を持つアカウントである必要はありません)。パスワードを正しく入力したことを確認して、「次へ (N) > 」をクリックしてください。
:: - 「[完了]をクリックしたときに詳細プロパティを開く (A)」をチェックして、「完了」ボタンをクリックしてください。
:: - 「[完了]をクリックしたときに詳細プロパティを開く (A)」をチェックして、「完了」ボタンをクリックしてください。
:: - 「スタート >> ファイル名を指定して実行 (R) ...」を選択した後、テキストボックスに次のコマンドを入力してください: <pre>c:\windows\wget.exe -q -O NUL http://my.moodle.site/moodle/admin/cron.php</pre> または <pre>c:\php\php-win.exe -f c:\moodle\admin\cron.php</pre> あなたのMoodleディレクトリと「c:\moodle」を入れ替えるか、あなたのサイト名 "my.moode.site" を入力してください。<br><br>
:: - 「スタート >> ファイル名を指定して実行 (R) ...」を選択した後、テキストボックスに次のコマンドを入力してください: <pre>c:\windows\wget.exe -q -O NUL http://my.moodle.site/moodle/admin/cron.php</pre> または <pre>c:\php\php-win.exe -f c:\moodle\admin\cron.php</pre> あなたのMoodleディレクトリと「c:\moodle」を入れ替えるか、あなたのサイト名「my.moode.site」を入力してください。<br><br>
:: - 「スケジュール」タブをクリックして、「詳細設定 (V) ...」ボタンをクリックしてください。
:: - 「スケジュール」タブをクリックして、「詳細設定 (V) ...」ボタンをクリックしてください。
:: - 「タスクを繰り返し実行 (R)」チェックボックスをチェックして、「間隔 (V)」に5分、「継続期間 (D)」に23時間59分を設定してください。
:: - 「タスクを繰り返し実行 (R)」チェックボックスをチェックして、「間隔 (V)」に5分、「継続期間 (D)」に23時間59分を設定してください。
:: - 「OK」ボタンを2回クリックして、完了です。
:: - 「OK」ボタンを2回クリックして、完了です。
* '''あなたのスケジュールタスクをテストする''' 登録したタスクにマウスポインタを合わせて右クリック、「タスクの実行 (U)」をクリックすることで、あなたはスケジュールタスクが正常に動作するかどうか確認することができます。すべてが正常にセットアップされている場合、wget/php実行中、一時的にDOSコマンドウィンドウが表示された後、DOSコマンドウィンドウが消えます。タスクフォルダをリフレッシュすることで、現在の時間を反映した「前回の実行時間」 (詳細 (D) フォルダ表示) が表示され、「前回の結果」カラムには「0x0」 (すべてOK) が表示されます。どちらかの表示が異なる場合、あなたのセットアップ内容を再度確認してください。
* '''あなたのスケジュールタスクをテストする''' 登録したタスクにマウスポインタを合わせて右クリック、「タスクの実行 (U)」をクリックすることで、あなたはスケジュールタスクが正常に動作するかどうか確認することができます。すべてが正常にセットアップされている場合、wget/php実行中、一時的にDOSウィンドウが表示された後、消えます。タスクフォルダをリフレッシュすることで、現在の時間を反映した「前回の実行時間」 (詳細 (D) フォルダ表示) が表示され、「前回の結果」カラムには「0x0」 (すべてOK) が表示されます。どちらかの表示が異なる場合、あなたのセットアップ内容を再度確認してください。
* '''cronアウトプットを記録する''' cronジョブがエラーを出している場合、バックアップが完了しない場合、ユーザのフォーラム購読メールが遅延する場合、cronスクリプトの実行時のアウトプットを記録してください。To do this, adjust the command so that it uses the php.exe and stores the output in a file called (for example c:\moodle\admin\cron.log). Here is an example of the php.exe command:
* '''cronアウトプットを記録する''' cronジョブがエラーを出している場合、バックアップが完了しない場合、ユーザのフォーラム購読メールが遅延する場合、cronスクリプトの実行時のアウトプットを記録してください。cronアウトプットを記録するためには、コマンドがphp.exeを使用し、アウトプットがファイル (c:\moodle\admin\cron.log) に記録されるよう合わせてください。以下、php.exeコマンドの例です:
<pre>c:\php\php.exe -f c:\moodle\admin\cron.php > c:\moodle\admin\cron.log</pre>
<pre>c:\php\php.exe -f c:\moodle\admin\cron.php > c:\moodle\admin\cron.log</pre>


==ウェブホスティングサービスのCron管理==
==ウェブホスティングサービスのCron管理==


Your web-based control panel may have a web page that allows you to set up a cron service process.
ウェブホスティングでは、多くの場合、ウェブベースのコントロールパネルでcronサービスを設定することができます。


===CPanelのCronサービス===
===CPanelのCronサービス===
If you are using CPanel, login then look for "Advanced" category towards the bottom of the page. Click on Cron Jobs -> Advanced (Unix style). Enter the following for the cron to run every 30 minutes.
あなたがcPanelを使用している場合、ログイン後、ページ下部の「Advanced」を確認してください。そして、「Cron Jobs -> Advanced (Unix style)」をクリックします。 cronが30分ごとに動作するよう、以下の内容を入力してください。


  Email address for output: emailaddress@mydomain.con
  Email address for output: emailaddress@mydomain.con
63行目: 61行目:
  <nowiki>Command: wget -q -O /dev/null http://www.mydomain.com/moodle/admin/cron.php</nowiki>
  <nowiki>Command: wget -q -O /dev/null http://www.mydomain.com/moodle/admin/cron.php</nowiki>


Click Commit Changes. Check your email for the output.
「Commit Changes」をクリックしてください。あなたのメールに送信されるcronの動作状況を確認してください。
 
[[Image:Cpanel-cron-setup.JPG]]
[[Image:Cpanel-cron-setup.JPG]]


===他のシステムのCronサービス===
===他のシステムのCronサービス===
For other systems, look for a button called "Cron jobs". In there you can put the same sort of Unix commands as listed below.
他のシステムでは、「Cron jobs」のようなボタンを探してください。そこでは、以下のUnixコマンドと同じようなコマンドを設定することができます。




If you don't have permissions to run the 'wget' command on the server, you can use this php command:
あなたにサーバでwgetコマンドを実行するパーミッションがない場合、このphpコマンドを使用することができます:


  /usr/local/bin/php -q /real/path/to/script/admin/cron.php
  /usr/local/bin/php -q /real/path/to/script/admin/cron.php


For example:  
例えば:  


  /usr/local/bin/php -q /home/username/public_html/moodle/admin/cron.php
  /usr/local/bin/php -q /home/username/public_html/moodle/admin/cron.php


If you don't know what is the real path of your Moodle folder you can use the PHP command realpath.
あなたのMoodleフォルダへの実パスが分からない場合、PHPの「realpath() 関数」を使用することができます。


Another alternative, if you do not have permission to run the 'wget' command, may be to use a curl command.
もうひとつの方法、あなたにサーバでwgetコマンドを実行するパーミッションがない場合、curlコマンドを使用することができます。


For example:
例えば:


curl --silent --compressed http://mydomain.com/moodle/admin/cron.php
curl --silent --compressed <nowiki>http://mydomain.com/moodle/admin/cron.php</nowiki>


==UnixのコマンドラインでCronを使用する==
==UnixのコマンドラインでCronを使用する==


There are different command line programs you can use to call the page from the command line. Not all of them may be available on a given server.
あなたがコマンドラインからページをコールするため、異なるコマンドラインプログラムがあります。サーバにより、実行できないプログラムもあります。


For example, you can use a Unix utility like 'wget':
例えば、あなたは「wget」のようなUnixユーティリティを使用することができます:


  wget -q -O /dev/null <nowiki>http://example.com/moodle/admin/cron.php</nowiki>
  wget -q -O /dev/null <nowiki>http://example.com/moodle/admin/cron.php</nowiki>


Note in this example that the output is thrown away (to /dev/null).
この例では、アウトプットは (/dev/null ) 破棄されます。


A number of users of Moodle have found that 'wget' sometimes fails. Especially if you have trouble with email digests not being sent on a daily basis to all users, an alternative command that solves the problem is:
多くのMoodleユーザにより、「wget」が時々動作不良を起こすと報告されています。特にフォーラムから毎日メール要約がすべてのユーザに送信されない場合、代わりのコマンドで問題を解決することができます。


  php <nowiki>http://example.com/moodle/admin/cron.php</nowiki>
  php <nowiki>http://example.com/moodle/admin/cron.php</nowiki>


The same thing using lynx:
同じくlynxを使用すると:


  lynx -dump <nowiki>http://example.com/moodle/admin/cron.php</nowiki> > /dev/null
  lynx -dump <nowiki>http://example.com/moodle/admin/cron.php</nowiki> > /dev/null


Note in this example that the output is thrown away (to /dev/null).
この例では、アウトプットは (/dev/null ) 破棄されます。


Alternatively you could use a standalone version of PHP, compiled to be run on the command line. The advantage with doing this is that your web server logs aren't filled with constant requests to cron.php. The disadvantage is that you need to have access to a command-line version of php.
代わりにコマンドラインで実行するようコンパイルされた、スタンドアロンバージョンのPHPを使用することもできます。このPHPを使用するメリットは、あなたのウェブサーバのログがcron.phpの連続したリクエストで一杯にならないことです。このPHPを使用するデメリットは、コマンドラインバージョンのPHPにアクセスしなければならないことです。


  /opt/bin/php /web/moodle/admin/cron.php
  /opt/bin/php /web/moodle/admin/cron.php
113行目: 110行目:
===Unixのcrontabプログラムを使用する===
===Unixのcrontabプログラムを使用する===


All that Cpanel does is provide a web interface to a Unix utility known as crontab. If you have a command line, you can set up crontab yourself using the command:
Cpanelでは、crontabとして知れられているUnixユーティリティのウェブインターフェースを提供します。あなたがコマンドラインを使用できる場合、コマンドを使用して、自分でcrontabを設定することができます。


  crontab -e
  crontab -e


and then adding one of the above commands like:
そして、前述「Cron Jobs -> Advanced (Unix style)」の内容を次のように追加します:


  */30 * * * * wget -q -O /dev/null <nowiki>http://example.com/moodle/admin/cron.php</nowiki>
  */30 * * * * wget -q -O /dev/null <nowiki>http://www.mydomain.com/moodle/admin/cron.php</nowiki>


The first five entries are the times to run values, followed by the command to run. The asterisk is a wildcard, indicating any time. The above example means run the command ''wget -q -O /dev/null...'' every 30 minutes (*/30), every hour (*), every day of the month (*), every month (*), every day of the week (*).
最初の5つのエントリは、それに続くコマンドを実行するための時間の値です。アスタリスク (*) は、常時を意味するワイルドカードです。上記例では、コマンド「wget -q -O /dev/null...」を30分毎 (*/30)、毎時 (*)、毎日 (*)、毎月 (*)、すべての曜日 (*) に実行します。


The "O" of "-O" is the capital letter not zero, and refers the output file destination, in this case "/dev/null" which is a black hole and discards the output. If you want to see the output of your cron.php then enter its url in your browser.  
-O」の「O」は、ゼロではなく、アウトプット先を示す大文字のO (オー) です。この例の場合、アウトプットを破棄するブラックホール「dev/null」をアウトプット先としています。あなたがcron.phpのアウトプットを表示したい場合、ブラウザにURIを直接入力してください。


* [http://linuxweblog.com/node/24 A basic crontab tutorial]  
* [http://linuxweblog.com/node/24 A basic crontab tutorial] - 英語
* [http://www.freebsd.org/cgi/man.cgi?query=crontab&apropos=0&sektion=5&manpath=FreeBSD+6.0-RELEASE+and+Ports&format=html Online version of the man page]  
* [http://www.freebsd.org/cgi/man.cgi?query=crontab&apropos=0&sektion=5&manpath=FreeBSD+6.0-RELEASE+and+Ports&format=html Online version of the man page] - 英語


For '''beginners''', "EDITOR=nano crontab -e" will allow you to edit the crontab using the [http://www.nano-editor.org/dist/v1.2/faq.html nano] editor. Ubuntu defaults to using the nano editor.
あなたが「初心者」の場合、「EDITOR=nano crontab -e」コマンドにより、[http://www.nano-editor.org/dist/v1.2/faq.html nano]エディタを使用して、crontabを編集することができます。Ubuntuでは、nanoエディタをデフォルトのエディタとしています。


Usually, the "crontab -e" command will put you into the 'vi' editor. You enter "insert mode" by pressing "i", then type in the line as above, then exit insert mode by pressing ESC. You save and exit by typing ":wq", or quit without saving using ":q!" (without the quotes). Here is an [http://www.unix-manuals.com/tutorials/vi/vi-in-10-1.html intro] to the 'vi' editor.
通常、「crontab -e」コマンドでは、viエディタが起動されます。「i」キーを押すことで、挿入モードに入ります。前述のコマンドラインを入力して、ESCキーを押すことで、挿入モードから抜けます。「wq」とタイプすることで、あなたは内容を保存して、viエディタを終了させることができます。または、「q!」とタイプすることで、内容を保存せずに、viエディタを終了させることができます。viエディタに関する[http://www.unix-manuals.com/tutorials/vi/vi-in-10-1.html イントロダクション (英語) は、こちらをご覧ください]


==関連情報==
==関連情報==


Using Moodle forum discussions:
Using Moodleフォーラムディスカッション (英語):
*[http://moodle.org/mod/forum/discuss.php?d=41827 Cron - can someone give me a quick confirmation of function?]
*[http://moodle.org/mod/forum/discuss.php?d=41827 Cron - can someone give me a quick confirmation of function?]
*[http://moodle.org/mod/forum/discuss.php?d=97684 Cronjob Question]
*[http://moodle.org/mod/forum/discuss.php?d=97684 Cronjob Question]

2008年7月15日 (火) 15:45時点における最新版

Cronでは、定期的なMoodleモジュールの実行を支援します。例えば、すべてのディスカッションフォーラムをチェックして、フォーラムをメール購読しているユーザに対して、新しい投稿のコピーをメール送信します。

すべての処理を実行するMoodleの主要なスクリプトは、adminディレクトリに置かれ、cron.phpと呼ばれます。スクリプト自体は自分で動作することができませんので、あなたはスクリプトを定期的 (例 5分または10分毎) に実行する仕組みを設定する必要があります。それぞれのモジュールで定義された機能をスクリプトが実行できるよう、Cronは「心臓の鼓動 (hearbeat)」を提供します。この種の定期的なメカニズムは「Cronサービス」として知られています。サービスは、ウェブホストの一部、または異なるサーバまたはコンピュータで実行することができます。

Cronの概要

スクリプトの概要

cron.phpスクリプトは、Moodleのモジュールに関する、Moodleデータベース内のmdl_modulesテーブル (デフォルトのテーブル接頭辞が mdl_ と仮定して) を調べて、定期的にcron機能が実行されるようにします。そして、それぞれのモジュールディレクトリ内にあるlib.phpファイルから「モジュール名_cron」の関数を探して、実行します。また、mdl_blockテーブルを調べて、cronメソッド (オブジェクト関数) が定期的に実行されるようにします。そして、それぞれのブロックから、そのブロックに関係する新しいオブジェクトのため、cronメソッドを実行します (プログラマーではない人のため、私は詳細説明を省略しています。プログラマーは、自分で admin/cron.phpを読めますから)。これらのファイル (lib.phpファイルおよびブロックのクラスが定義されているファイル) には、クリーンアップ機能、メール機能および定期的に実行する必要な機能を組み込むことができます。例えば、「管理 > コースバックアップ」で指定された時間にコースバックアップを作成するため、cronはシステムにトリガー (きっかけ) を与えます。また、cronはメッセージモジュールまたはフォーラム投稿通知に対してトリガーを与えますが、cronが実行されるたび、すべての機能がコールされるわけではありません。長期間ログインしていない学生の削除、古いログファイルの削除等、いくつかの機能は時々実行されるだけです。cron.phpファイルには、cron実行の1/5の割合で、これらのコアタスクをランダムに実行するためのセクションがあります。

Cronサービスロケーションおよびタイミング

cronを実行するコンピュータは、 Moodleが動作しているコンピュータと同じである必要はありません。例えば、あなたがcronを動作できないような、サービスを制限したウェブホスティングサービスを利用している場合、他のサーバまたはあなたの自宅のコンピュータでcronを実行させることができます。大切なことは、cron.phpが定期的に実行されることだけです。

このスクリプトのロードは、それほど高くありません。ですから、5分毎に動作させるのが適切です。あなたが5分毎のcron.phpの動作に心配な場合、15分毎または30分毎に動作間隔を延ばすこともできます。メール送信の遅れにより、コース内の活動をスローダウンしてしまうこともありますので、cron.phpの動作間隔を伸ばしすぎない方が良いでしょう。cron.phpによるメール送信は、「サイト管理 > セキュリティ > サイトポリシー」の「投稿を編集できる最大時間」に影響されることを記憶に留めてください。

Cronのテストおよびマニュアルトリガー

あなたのブラウザから直接スクリプトが動作できるか、最初にテストしてください: http://example.com/moodle/admin/cron.php

あなたのMoodleにログインしているユーザから、コマンドラインでcronが実行された場合、cronを実行するため、一時的に管理者環境が作成され、そのユーザはログアウトされます。cron.phpファイルを無効にすることで、コマンドラインによるcron.php実行を停止することができます。

cron.phpを無効にした場合、自動的かつ定期的にcron.phpが実行される環境を設定する必要があります。

WindowsシステムのCron管理

WindowsシステムでMoodleのcron.phpを設定するには、異なる2つの方法があります:

  • Moodle Cronパッケージを使用する 最も簡単な方法は、Moodleに関するWindowsサービスをインストールしてくれる、この小さなパッケージ「MoodleCron-Setup.exe」を使用することです。このパッケージを実行した後は、すべて忘れましょう!
  • スケジュールタスクを使用する あなたがWindowsスケジューラを使用したい場合、またはmoodle-cron-for-windowsパッケージに問題がある場合、スケジュールタスクを設定することで、Windows用のwgetを使用するか、コマンドラインでphpを使用することができます。以下の手順に従ってください:
    • php.exe/php-win.exe (コマンドラインバイナリ) または wget を選択する。
あなたのphpフォルダ (例. c:\php) にインストールされているphp.exeまたはphp-win.exeバイナリ (PHP version 5以降) は、cronスクリプトの動作に対して良いパフォーマンスをもたらします。
あなたがwgetを使用したい場合、Windows用wgetのコンパイル済みバージョンを、オリジナルのGNU Win32 ports (http://unxutils.sourceforge.net/)、Heiko Herold's windows wget spot (http://xoomer.virgilio.it/hherold/) または Bart Puype氏のWGET for Windows (win32) ページ (http://users.ugent.be/~bpuype/wget/) からダウンロードしてください。あなたがHeiko Herold氏のパッケージを使用している場合、すべてのDLLファイルを「C:\Windows\system32」ディレクトリにコピーしてください。そして、wget.exeファイルを「c:\windows」ディレクトリにコピーしてください (このことにより、wgetを常にサーチパスに置きます)。
  • Scheduled Task を設定する。
- 「スタート >> コントロールパネル >> タスク >> コントロールされたタスクの追加」へ移動してください。
- ウィザードを開始するには、「次へ (N) >」をクリックしてください。
- 「参照 (R) ...」ボタンをクリックして、 c:\php\php.exe または c:\windows\wget.exe を選択した後、「開く (O)」をクリックしてください。
- タスク名に「Moodle Cron」と入力して、タスクの実行に「日単位 (D)」を選択した後、「次へ (N) > 」をクリックしてください。
- 開始時刻で「12:00」を選択して、このタスクの実行に「毎日 (A)」を選択してください。開始日に今日の日付を選択した後、「次へ (N) > 」をクリックしてください。
- タスクを実行するユーザ名およびパスワードを入力してください (管理者権限を持つアカウントである必要はありません)。パスワードを正しく入力したことを確認して、「次へ (N) > 」をクリックしてください。
- 「[完了]をクリックしたときに詳細プロパティを開く (A)」をチェックして、「完了」ボタンをクリックしてください。
- 「スタート >> ファイル名を指定して実行 (R) ...」を選択した後、テキストボックスに次のコマンドを入力してください:
c:\windows\wget.exe -q -O NUL http://my.moodle.site/moodle/admin/cron.php
または
c:\php\php-win.exe -f c:\moodle\admin\cron.php
あなたのMoodleディレクトリと「c:\moodle」を入れ替えるか、あなたのサイト名「my.moode.site」を入力してください。

- 「スケジュール」タブをクリックして、「詳細設定 (V) ...」ボタンをクリックしてください。
- 「タスクを繰り返し実行 (R)」チェックボックスをチェックして、「間隔 (V)」に5分、「継続期間 (D)」に23時間59分を設定してください。
- 「OK」ボタンを2回クリックして、完了です。
  • あなたのスケジュールタスクをテストする 登録したタスクにマウスポインタを合わせて右クリック、「タスクの実行 (U)」をクリックすることで、あなたはスケジュールタスクが正常に動作するかどうか確認することができます。すべてが正常にセットアップされている場合、wget/php実行中、一時的にDOSウィンドウが表示された後、消えます。タスクフォルダをリフレッシュすることで、現在の時間を反映した「前回の実行時間」 (詳細 (D) フォルダ表示) が表示され、「前回の結果」カラムには「0x0」 (すべてOK) が表示されます。どちらかの表示が異なる場合、あなたのセットアップ内容を再度確認してください。
  • cronアウトプットを記録する cronジョブがエラーを出している場合、バックアップが完了しない場合、ユーザのフォーラム購読メールが遅延する場合、cronスクリプトの実行時のアウトプットを記録してください。cronアウトプットを記録するためには、コマンドがphp.exeを使用し、アウトプットがファイル (例 c:\moodle\admin\cron.log) に記録されるよう合わせてください。以下、php.exeコマンドの例です:
c:\php\php.exe -f c:\moodle\admin\cron.php > c:\moodle\admin\cron.log

ウェブホスティングサービスのCron管理

ウェブホスティングでは、多くの場合、ウェブベースのコントロールパネルでcronサービスを設定することができます。

CPanelのCronサービス

あなたがcPanelを使用している場合、ログイン後、ページ下部の「Advanced」を確認してください。そして、「Cron Jobs -> Advanced (Unix style)」をクリックします。 cronが30分ごとに動作するよう、以下の内容を入力してください。

Email address for output: emailaddress@mydomain.con
Minute:*/30
Hour:*
Day:*
Month:*
Weekday:* 
Command: wget -q -O /dev/null http://www.mydomain.com/moodle/admin/cron.php

「Commit Changes」をクリックしてください。あなたのメールに送信されるcronの動作状況を確認してください。 Cpanel-cron-setup.JPG

他のシステムのCronサービス

他のシステムでは、「Cron jobs」のようなボタンを探してください。そこでは、以下のUnixコマンドと同じようなコマンドを設定することができます。


あなたにサーバでwgetコマンドを実行するパーミッションがない場合、このphpコマンドを使用することができます:

/usr/local/bin/php -q /real/path/to/script/admin/cron.php

例えば:

/usr/local/bin/php -q /home/username/public_html/moodle/admin/cron.php

あなたのMoodleフォルダへの実パスが分からない場合、PHPの「realpath() 関数」を使用することができます。

もうひとつの方法、あなたにサーバでwgetコマンドを実行するパーミッションがない場合、curlコマンドを使用することができます。

例えば:

curl --silent --compressed http://mydomain.com/moodle/admin/cron.php

UnixのコマンドラインでCronを使用する

あなたがコマンドラインからページをコールするため、異なるコマンドラインプログラムがあります。サーバにより、実行できないプログラムもあります。

例えば、あなたは「wget」のようなUnixユーティリティを使用することができます:

wget -q -O /dev/null http://example.com/moodle/admin/cron.php

この例では、アウトプットは (/dev/null に) 破棄されます。

多くのMoodleユーザにより、「wget」が時々動作不良を起こすと報告されています。特にフォーラムから毎日メール要約がすべてのユーザに送信されない場合、代わりのコマンドで問題を解決することができます。

php http://example.com/moodle/admin/cron.php

同じくlynxを使用すると:

lynx -dump http://example.com/moodle/admin/cron.php > /dev/null

この例では、アウトプットは (/dev/null に) 破棄されます。

代わりにコマンドラインで実行するようコンパイルされた、スタンドアロンバージョンのPHPを使用することもできます。このPHPを使用するメリットは、あなたのウェブサーバのログがcron.phpの連続したリクエストで一杯にならないことです。このPHPを使用するデメリットは、コマンドラインバージョンのPHPにアクセスしなければならないことです。

/opt/bin/php /web/moodle/admin/cron.php

Unixのcrontabプログラムを使用する

Cpanelでは、crontabとして知れられているUnixユーティリティのウェブインターフェースを提供します。あなたがコマンドラインを使用できる場合、コマンドを使用して、自分でcrontabを設定することができます。

crontab -e

そして、前述「Cron Jobs -> Advanced (Unix style)」の内容を次のように追加します:

*/30 * * * * wget -q -O /dev/null http://www.mydomain.com/moodle/admin/cron.php

最初の5つのエントリは、それに続くコマンドを実行するための時間の値です。アスタリスク (*) は、常時を意味するワイルドカードです。上記例では、コマンド「wget -q -O /dev/null...」を30分毎 (*/30)、毎時 (*)、毎日 (*)、毎月 (*)、すべての曜日 (*) に実行します。

「-O」の「O」は、ゼロではなく、アウトプット先を示す大文字のO (オー) です。この例の場合、アウトプットを破棄するブラックホール「dev/null」をアウトプット先としています。あなたがcron.phpのアウトプットを表示したい場合、ブラウザにURIを直接入力してください。

あなたが「初心者」の場合、「EDITOR=nano crontab -e」コマンドにより、nanoエディタを使用して、crontabを編集することができます。Ubuntuでは、nanoエディタをデフォルトのエディタとしています。

通常、「crontab -e」コマンドでは、viエディタが起動されます。「i」キーを押すことで、挿入モードに入ります。前述のコマンドラインを入力して、ESCキーを押すことで、挿入モードから抜けます。「wq」とタイプすることで、あなたは内容を保存して、viエディタを終了させることができます。または、「q!」とタイプすることで、内容を保存せずに、viエディタを終了させることができます。viエディタに関するイントロダクション (英語) は、こちらをご覧ください

関連情報

Using Moodleフォーラムディスカッション (英語):