まず、cronがインストールされているか確認する。
1 2 |
[root@v4690 ~]# service crond status crond: 認識されていないサービスです。 |
おや、インストールされていないみたいですね。
ではインストールしましょう。
1 |
[root@v4690 ~]# yum install crontabs |
次に、cronで、何のプログラムをいつ実行するのかを設定します。
1 |
[root@v4690 ~]# crontab -e |
このコマンドで、エディタが開きます。
viエディタと操作は同じです。
そこに、タイミング、実行するプログラムの種類、実行するプログラムフルパス
を記載して改行して保存します。
私の場合、phpのcodeigniterで作ったコントローラーを実行したかったので、
以下のように記載しました。
カゴヤVPSに入れているCentOSのphpは、/usr/binにあります。
また、呼び出すphpはcodeigniterで作成したcontrollerを指定します。
1 |
0 * * * * /usr/bin/php /var/www/html/program/index.php timecron get_time |
上記の例は、codeigniterで開発したコントローラーの中のファイル、Timecrom.phpに記載したTimecronクラスのcron_timeメソッドを実行しています。
/var/www/html/program にcodeigniterがあります。
最初に記載している「0 * * * *」のところは、毎時0分に実行する感じになります。
ファイルを保存して、残るはcronを起動します。
まず、起動しているか以下のコマンドで確認できます。
1 2 |
[root@v4690 ~]# /etc/rc.d/init.d/crond status crond は停止しています |
停止してますね。では起動しましょう。
1 2 |
[root@v4690 ~]# /etc/rc.d/init.d/crond start crond を起動中: [ OK ] |
これで設定の通り、動き出すはずです。
あ、もうひとつ。
/var/www/html にWEBサイトのphpがあり、画面でこしょこしょやる機能も備えつつ、裏で定期的にCRONを使ってバッチ処理もするというのが今回のやったことです。
画面の方は経費削減の方向で(笑)ログイン認証の機能は備えておらず、いわゆるBasic認証をかけております。
codeigniterのcontrollersフォルダに、WEBサイトのPHPもあれば、Cronで動かすバッチ用のPHPもあるわけです。
CRONでPHPが自動で実行される時って、ベーシック認証はどうなるんだっけ?
という疑問が湧いてきますよね?
つまり、CRONでPHPを実行する際にもベーシック認証を自動で行う機能を作らなきゃいけないの? っていうことです。
結論不要です。
codeigniterのマニュアルにも書いてありますが、CLIというやつでやります。
といっても難しいことではなく、cronで実行するphpファイル(controllファイル)のfunctionの中で判定文をひとつ入れるだけです。
簡単だ!
ということで、こんなイメージです。↓
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php class Timecron extends CI_Controller{ public function __construct(){ parent::__construct(); } public function get_time() { if ( is_cli() ) { $this->load->library('geting_time'); $this->geting_time->get_time_controll(); } } } |
if ( is_cli() ) {
}
でWEBアクセス(URL)からアクセスされているのか判定するわけですね。
trueだったら、”実行”となります。
コメントを残す