「Cron」の版間の差分
Mitsuhiro Yoshida (トーク | 投稿記録) |
Mitsuhiro Yoshida (トーク | 投稿記録) (Done ... long climb. :^) |
||
(同じ利用者による、間の38版が非表示) | |||
1行目: | 1行目: | ||
Cronでは、定期的なMoodleモジュールの実行を支援します。例えば、すべてのディスカッションフォーラムをチェックして、フォーラムをメール購読しているユーザに対して、新しい投稿のコピーをメール送信します。 | Cronでは、定期的なMoodleモジュールの実行を支援します。例えば、すべてのディスカッションフォーラムをチェックして、フォーラムをメール購読しているユーザに対して、新しい投稿のコピーをメール送信します。 | ||
すべての処理を実行するMoodleの主要なスクリプトは、adminディレクトリに置かれ、cron. | すべての処理を実行するMoodleの主要なスクリプトは、adminディレクトリに置かれ、cron.phpと呼ばれます。スクリプト自体は自分で動作することができませんので、あなたはスクリプトを定期的 (例 5分または10分毎) に実行する仕組みを設定する必要があります。それぞれのモジュールで定義された機能をスクリプトが実行できるよう、Cronは「心臓の鼓動 (hearbeat)」を提供します。この種の定期的なメカニズムは「Cronサービス」として知られています。サービスは、ウェブホストの一部、または異なるサーバまたはコンピュータで実行することができます。 | ||
==Cronの概要== | ==Cronの概要== | ||
===スクリプトの概要=== | ===スクリプトの概要=== | ||
cron.phpスクリプトは、Moodleのモジュールに関する、Moodleデータベース内のmdl_modulesテーブル ( | 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>'' | |||
あなたの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 | *'''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を使用することができます。以下の手順に従ってください: | ||
** '''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 | :: - タスク名に「Moodle Cron」と入力して、タスクの実行に「日単位 (D)」を選択した後、「次へ (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:\ | :: - 「スタート >> ファイル名を指定して実行 (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/ | * '''あなたのスケジュールタスクをテストする''' 登録したタスクにマウスポインタを合わせて右クリック、「タスクの実行 (U)」をクリックすることで、あなたはスケジュールタスクが正常に動作するかどうか確認することができます。すべてが正常にセットアップされている場合、wget/php実行中、一時的にDOSウィンドウが表示された後、消えます。タスクフォルダをリフレッシュすることで、現在の時間を反映した「前回の実行時間」 (詳細 (D) フォルダ表示) が表示され、「前回の結果」カラムには「0x0」 (すべてOK) が表示されます。どちらかの表示が異なる場合、あなたのセットアップ内容を再度確認してください。 | ||
* '''cronアウトプットを記録する''' | * '''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管理== | ||
ウェブホスティングでは、多くの場合、ウェブベースのコントロールパネルでcronサービスを設定することができます。 | |||
===CPanelのCronサービス=== | ===CPanelのCronサービス=== | ||
あなたが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> | ||
「Commit Changes」をクリックしてください。あなたのメールに送信されるcronの動作状況を確認してください。 | |||
[[Image:Cpanel-cron-setup.JPG]] | [[Image:Cpanel-cron-setup.JPG]] | ||
===他のシステムのCronサービス=== | ===他のシステムのCronサービス=== | ||
他のシステムでは、「Cron jobs」のようなボタンを探してください。そこでは、以下のUnixコマンドと同じようなコマンドを設定することができます。 | |||
あなたにサーバで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 | ||
例えば: | |||
/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 | ||
あなたのMoodleフォルダへの実パスが分からない場合、PHPの「realpath() 関数」を使用することができます。 | |||
もうひとつの方法、あなたにサーバでwgetコマンドを実行するパーミッションがない場合、curlコマンドを使用することができます。 | |||
例えば: | |||
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を使用する== | ||
あなたがコマンドラインからページをコールするため、異なるコマンドラインプログラムがあります。サーバにより、実行できないプログラムもあります。 | |||
例えば、あなたは「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> | ||
この例では、アウトプットは (/dev/null に) 破棄されます。 | |||
多くのMoodleユーザにより、「wget」が時々動作不良を起こすと報告されています。特にフォーラムから毎日メール要約がすべてのユーザに送信されない場合、代わりのコマンドで問題を解決することができます。 | |||
php <nowiki>http://example.com/moodle/admin/cron.php</nowiki> | php <nowiki>http://example.com/moodle/admin/cron.php</nowiki> | ||
同じく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 | ||
この例では、アウトプットは (/dev/null に) 破棄されます。 | |||
代わりにコマンドラインで実行するようコンパイルされた、スタンドアロンバージョンの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プログラムを使用する=== | ||
Cpanelでは、crontabとして知れられているUnixユーティリティのウェブインターフェースを提供します。あなたがコマンドラインを使用できる場合、コマンドを使用して、自分でcrontabを設定することができます。 | |||
crontab -e | crontab -e | ||
そして、前述「Cron Jobs -> Advanced (Unix style)」の内容を次のように追加します: | |||
*/30 * * * * wget -q -O /dev/null <nowiki>http:// | */30 * * * * wget -q -O /dev/null <nowiki>http://www.mydomain.com/moodle/admin/cron.php</nowiki> | ||
最初の5つのエントリは、それに続くコマンドを実行するための時間の値です。アスタリスク (*) は、常時を意味するワイルドカードです。上記例では、コマンド「wget -q -O /dev/null...」を30分毎 (*/30)、毎時 (*)、毎日 (*)、毎月 (*)、すべての曜日 (*) に実行します。 | |||
「-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] - 英語 | ||
あなたが「初心者」の場合、「EDITOR=nano crontab -e」コマンドにより、[http://www.nano-editor.org/dist/v1.2/faq.html nano]エディタを使用して、crontabを編集することができます。Ubuntuでは、nanoエディタをデフォルトのエディタとしています。 | |||
通常、「crontab -e」コマンドでは、viエディタが起動されます。「i」キーを押すことで、挿入モードに入ります。前述のコマンドラインを入力して、ESCキーを押すことで、挿入モードから抜けます。「wq」とタイプすることで、あなたは内容を保存して、viエディタを終了させることができます。または、「q!」とタイプすることで、内容を保存せずに、viエディタを終了させることができます。viエディタに関する[http://www.unix-manuals.com/tutorials/vi/vi-in-10-1.html イントロダクション (英語) は、こちらをご覧ください]。 | |||
==関連情報== | ==関連情報== | ||
Using | 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の動作状況を確認してください。
他のシステムの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フォーラムディスカッション (英語):