CodeIgniter3でCronを実行する方法
2024/01/30
CodeIgniter3系で特定の処理をCronで自動実行したかった。以下に設定方法をメモ。尚、Codeigniter4系の場合はこちらの記事を参照。
設定
applicationとかsystemとかが置いてあるディレクトリのindex.phpに以下の通り追記する。
if (defined('STDIN'))
{
chdir(dirname(__FILE__));
$assign_to_config['uri_protocol'] = 'CLI'; //この行を追記
}
Cronで実行したい処理
コントローラーで普通に関数を書く。
public function hoge()
{
//Cronでしたい処理を書く。
}
ただ、上記の場合にルーティング設定をしているとHTTPリクエストからでも実行されてしまう。 もし実行したくない場合は、以下のように記述する。
public function hoge()
{
if( $this->input->is_cli_request() ){
//成功時の処理。Cronでしたい処理を書く。
} else {
//失敗時の処理。HTTPリクエストの場合はこちらになる。
}
}
Cronの記述
以下の通り記述する。
#[時間設定] [ユーザー名] [PHPパス] [codeigniter/index.phpへの絶対パス] [コントローラー名] [メソッド名] [必要なら引数] 0 * * * * root /usr/bin/php /var/codeigniter/index.php cron hoge
上記の場合は「1時間に1回コントローラーのCron.php内のhogeメソッドをrootユーザーで実行する」という形になる。
その他
HTTPリクエストの許可拒否をメソッド単位で変更できるのは便利。基本的には自動処理だけど、たまに手動処理したいとかいう場合に使える。
参考サイト
関連記事
-
-
CodeIgniter3でログをファイルに出力する方法
Codeigniter3でエラーログの設定を行い特定のファイルに出力させ当該ログ ...
-
-
CodeIgniter3で共通の変数と定数を設定する方法
CodeIgniter3系で共通する配列が入った変数と、定数を設定したかった。以 ...
-
-
CodeIgniter4でフォームからファイルをアップロードし保存する方法
CodeIgniter4.4.4でformから画像等のファイルをアップロードし、 ...
-
-
CodeIgniter4で特定のページにアクセスがあった際に301リダイレクトさせる方法
CodeIgniter4で特定のページにアクセスがあった際に301リダイレクトさ ...
-
-
Codeigniter3で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法
CodeigniterでCSSやJSファイル等の外部ファイル読み込みたかった。ま ...