2012年7月8日日曜日

[CodeIgniter] Cron処理 メモ

CodeIgniterでCronに仕込むバッチ処理を書こうと思って調べてみる。
何もしなくても下記のように普通にコマンドラインから実行できる。
$ cd /path/to/project;
$ php index.php controller method

これだけだとURLにアクセスされるとバッチ処理を実行できてしまうので、コンストラクタでコマンドラインからの実行でない場合は404にしておく。
class Cron extends CI_Controller {

    function __construct()
    {   
        parent::__construct();
        if (!$this->input->is_cli_request()) show_404(); 
    }

}
cron設定できる処理の数が決まっているレンタルサーバとかなら、判定条件を工夫して別のサーバからURL叩いて定期処理をさせるとかもできるか。

[参考]
CodeIgniter ユーザガイド CLIからの実行