WEBジョブを使えば定期的な処理を実行できる
AzureのAppServiceで、Windowsのタスクスケジューラとか、Linuxのcrontabのようなことをしたい場合は、WEBジョブが使える。
WEBジョブを使えば、定期的にスケジューリングして実行した処理、例えば、ログ収集や、ファイル削除等の処理を、実行させることができる。
WEBジョブ登録手順
あらかじめ、実行するプログラムはAppServiceへデプロイしておく。今回は、PHPスクリプトである、myjob.phpを登録するとする。
ジョブのトリガーファイル作成
まずは、実行するプログラムのトリガーとなるrun.bat
を作成する。
内容は、例えば以下のような感じ。
php %HOME%site\wwwroot\htdocs\myjob.php
Azureに登録するには、zip圧縮しないといけない。上記run.batをzipファイルにする。フォルダ等に含める必要はなく、run.batをそのまま圧縮すればOK。このとき、zipファイルの名前に特に決まりはなく、適当なものでいい。
管理ポータルでジョブを登録する
トリガーファイルを用意できたら、管理ポータルにて、ジョブの登録をする。
1.管理ポータルで目的のApp Serviceを選択し、「設定」 > 「Web ジョブ」 > 「追加」。
2.以下項目を設定する。
名前
ジョブの名前。
ファイルをアップロード
さきほど準備したzipファイルを選択する。
種類
トリガーされた:今回設定したのはコチラ。「トリガーされた」っていう日本語がおかしいが、これに設定すると、マニュアルで起動したり、スケジュールに乗せて起動したりできる。
継続:Windowsのサービスとか、Linuxのデーモンのように、常駐処理のようなことをしたい場合に設定。登録したら、処理が開始されるらしい(試してない)。スケールを設定して、シングルインスタンスで実行するか、マルチインスタンスで実行するか選べるみたい。
種類にトリガーされたを選択した場合
トリガー:予定か手動を選べる。今回は予定。
CRON 式:cron方式で時間を設定する。この設定方法は次の項目参照。(以前のAzureではcron式もjsonファイルにして、トリガーファイルと一緒に圧縮して送信していた。)
種類に継続を選択した場合
スケール:スケールを設定して、シングルインスタンスで実行するか、マルチインスタンスで実行するか選べるみたい。
3.すべて入力したら「OK」を押して登録する。
全部入力したら「OK」を押して登録。これでジョブの登録はOK。登録されたジョブを選択して「実行」押すと、手動で動かしたりもできる。
CRON式の書き方。
CRON式は、Linuxと同様に書けるが、ちょっと違う点があるので、注意する。
- 最小単位は秒
分と間違えて設定しないように!
- UTCなので注意。
設定した時間は、UTCとして認識されるので注意。例えば、日本時間(JST)の深夜の2時(26時)に実行する処理を登録したい場合は、JSTはUTC+9なので、以下のように、17時を設定する。
0 0 17 * * *
AppServiceの常時接続をオンにしておくのを忘れないように!
定期的に実行したい処理の場合、AppServiceの常時接続をオンにしておかないと、スケジュール通りに処理が実行されなくなってしまう。
アプリケーションタブの、常時接続の項目をオンに設定しておこう。(ただし、その分リソースを消費して、お金がかかるので注意。)
コメント