CodeIgniterのCLIでバッチ処理を実行してみる

着火

※この記事は CodeIgniter Advent Calendar 2015 の9日目です。

Web アプリケーション用のフレームワークという印象の CodeIgniter ですが、CLI(コマンドラインインターフェース)でバッチ処理を実行したいといった場合にもちゃんと対応しています。

以下、簡単なバッチ処理のサンプルを作って試してみましょう。

ちなみに確認環境は最新バージョン 3.0.3 です。

サンプルプログラム

まず、このようなシンプルなコントローラを作ってみます。

application/controllers/Batch.php


このコントローラをコマンドラインから実行してみましょう。

まず CodeIgniter がインストールされたディレクトリ(index.php がある場所)に移動します。

$ cd /path/to/CodeIgniter

そして、次のように php コマンドを実行します。(php index.php [コントローラ名] [メソッド名])

$ php index.php batch sample
done!

はい、ちゃんと実行できましたね。

通常のコントローラと仕組みは同じなので、もちろん引数を渡すようにもできます。


引数を渡す場合はコマンドの最後に指定して実行します。(php index.php [コントローラ名] [メソッド名] [引数1] [引数n])

$ php index.php batch sample Hideki Matsui
Hello Hideki Matsui!
done!

ちなみにこのコントローラをブラウザから呼び出すと、当たり前ですが処理が行われてこのように結果も表示されます。

CodeIgniter

でもバッチ処理で何かする場合って、一般的にブラウザからの実行は制限をかけたいケースの方が多いと思います。というわけで、コマンドラインからしか実行できないよう条件を加えてみます。


上のコード内にある is_cli() 関数を使うと、コマンドラインからの実行かどうか判定することができます。

このコントローラをブラウザから実行してみると・・・、ちゃんと制限がかかっていることが確認できました。

CodeIgniter

以上、簡単ですがバッチ処理のサンプルでした。

終わりに

業務システムを作るような場合、月末締め処理、バックアップ、外部システムとのデータ同期など、バッチ処理が求められることが必ずと言っていいほどありますが、CodeIgniter はそういった要件にもちゃんと対応できて安心ですね。

最後に私事ですが、今年は CodeIgniter を趣味のツール(「将棋メーカー」「将棋ウォーズ対局履歴取得ツール」)をいくつか作る程度しか使わずじまいでした。2016年はもっとガリガリ使う機会が増えるといいなあと思います。

CodeIgniter Advent Calendar 2015」明日は tomcat0090 さんです。みなさんお楽しみに!

この記事を書いた人

ko31

岩手県出身、群馬県在住のフリーランスWeb系エンジニアです。
Webシステム・アプリ、Webサービス、WordPress開発等を雑多にこなしています。バンカラ応援好きの振り飛車党。
PHP / WordPress / 高校野球 / 将棋 / WordPress / ブログ / 食べること / 二児の父親

>>もっと詳しいプロフィールはこちら

お仕事のご相談・お問い合わせ

当ブログの管理人は、Gosign(ゴーサイン)という屋号でフリーランス Web エンジニアとして活動しています。
ブログの掲載内容はもちろん、Web サイト制作や Web アプリケーション開発などのご相談・ご質問がありましたら、どうぞお気軽にお問い合わせください!

合わせて読みたい記事