[CodeIgniter3] CRONでコントローラーのメソッドを呼び出す

公開

スポンサーリンク

CodeIgniter3でCRONを使い、コントローラーのメソッドを呼び出す方法のメモ。基本的には2の時と同じなのだけど、コマンドラインからの呼び出しかどうかを判定するメソッド$this->input->is_cli_request()が非推奨になり、is_cli()が代わりに使われるようになった。

参考
Running via the CLI — CodeIgniter 3.0.1 documentation
<?php
class Foo extends CI_Controller {
  public function bar ($to = 'World' ) {
    echo "Hello {$to}!";
  }
}

上のようなコントローラーを用意した場合、cronの設定は以下の通り。

* * * * * php /var/html/codeigniter3/index.php foo bar

CodeIgniterを設置したディレクトリのindex.phpを呼び出し、その後にスペースを空けてコントローラーの名前とメソッド名を書く。

メソッドの引数に値を渡したい場合は、メソッド名の後ろに値を続けて書く。

* * * * * php /var/html/codeigniter3/index.php foo bar "hoge"

CRONからの呼び出しでのみメソッドを起動し、それ以外の通常のアクセスは除外したい場合はis_cli()を使う。

<?php
class Foo extends CI_Controller {
  public function bar ($to = 'World' ) {
    if ( is_cli() ) {// URLからのアクセスを拒否
      //	略
    }
  }
}

CodeIgniter2で使われていた$this->input->is_cli_request()非推奨となった。Ver3.1で除去される予定。今後はis_cli()関数を使う。

スポンサーリンク


Comment