codeigniter3 + カゴヤVPSサーバーでcronでphpを実行するぞ!

まず、cronがインストールされているか確認する。

おや、インストールされていないみたいですね。
ではインストールしましょう。

次に、cronで、何のプログラムをいつ実行するのかを設定します。

このコマンドで、エディタが開きます。
viエディタと操作は同じです。

そこに、タイミング、実行するプログラムの種類、実行するプログラムフルパス
を記載して改行して保存します。

私の場合、phpのcodeigniterで作ったコントローラーを実行したかったので、
以下のように記載しました。
カゴヤVPSに入れているCentOSのphpは、/usr/binにあります。
また、呼び出すphpはcodeigniterで作成したcontrollerを指定します。

上記の例は、codeigniterで開発したコントローラーの中のファイル、Timecrom.phpに記載したTimecronクラスのcron_timeメソッドを実行しています。

/var/www/html/program にcodeigniterがあります。

最初に記載している「0 * * * *」のところは、毎時0分に実行する感じになります。

ファイルを保存して、残るはcronを起動します。

まず、起動しているか以下のコマンドで確認できます。

停止してますね。では起動しましょう。

これで設定の通り、動き出すはずです。

あ、もうひとつ。

/var/www/html にWEBサイトのphpがあり、画面でこしょこしょやる機能も備えつつ、裏で定期的にCRONを使ってバッチ処理もするというのが今回のやったことです。

画面の方は経費削減の方向で(笑)ログイン認証の機能は備えておらず、いわゆるBasic認証をかけております。

codeigniterのcontrollersフォルダに、WEBサイトのPHPもあれば、Cronで動かすバッチ用のPHPもあるわけです。

CRONでPHPが自動で実行される時って、ベーシック認証はどうなるんだっけ?
という疑問が湧いてきますよね? 
つまり、CRONでPHPを実行する際にもベーシック認証を自動で行う機能を作らなきゃいけないの? っていうことです。

結論不要です。
codeigniterのマニュアルにも書いてありますが、CLIというやつでやります。
といっても難しいことではなく、cronで実行するphpファイル(controllファイル)のfunctionの中で判定文をひとつ入れるだけです。

簡単だ!

ということで、こんなイメージです。↓

if ( is_cli() ) {

}
でWEBアクセス(URL)からアクセスされているのか判定するわけですね。

trueだったら、”実行”となります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です