Codeigniter3をCronで動かす簡単な方法

Codeigniterを使っているときにCronで実行したくなることがあります。

今回はCodeigniter3をCronで動かす簡単な方法を紹介します。

今回使うCodeigniterのバージョン

Codeigniter 3.16

設定方法

コード

まずはコントローラを作成します。
Sampleコントローラを作り、sample1()関数を作りましょう。
sample1()内でログファイルにデータを書き出します。
※ログを書き出すにはconfig.phpのlog_thresholdを設定する必要があります。

class Sample extends CI_Controller {
    public function sample1(){
        //ログファイルに書き出す
        log_message('debug', 'test');
    }
}

Cronの設定

続いてCronの設定を行います。
Cronで実行するには下記のように記述します。

分 時 日 月 曜日 php Codeigniterのindex.phpのパス コントローラ メソッド

今回は、毎日0時0分にSampleコントローラのsample1()を実行するように記述してみます。

0 0 * * * php /codeigniter/path/index.php Sample sample1

これで、実行できるはずです。
※実行できない場合は、phpのパスを指定してみるなどしてください。

引数を設定する場合

今度はメソッドに引数を渡したい場合です。

コード

Sampleコントローラを作り、sample2($param)関数を作りましょう。
sample2()内でログファイルに$paramの内容を書き出します。

class Sample extends CI_Controller {
    public function sample2(param){
        //ログファイルに書き出す
        log_message('debug', $param);
    }
}

Cronの設定

続いてCronの設定を行います。
Cronで引数を渡して実行するには下記のように記述します。

分 時 日 月 曜日 php Codeigniterのindex.phpのパス コントローラ メソッド 引数

今回は、毎日0時0分にSampleコントローラのsample2()に100を渡して実行するように記述してみます。

0 0 * * * php /codeigniter/path/index.php Sample sample2 100

まとめ

いかがですか結構簡単に設定できたのではないでしょうか。

引数を渡してCronで実行する際の注意点ですが、紹介した方法だと引数は1つしか渡せませんでした。
現在複数渡す方法がないか確認中です。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください