Kenji
kenji****@club*****
2008年 1月 17日 (木) 19:48:22 JST
Kenji です。 On Thu, 17 Jan 2008 18:18:36 +0900 "Kenichi Ando" <neo.k****@gmail*****> wrote: > bossatamaです。 > > 08/01/17 に nomiso0125<nomis****@gmail*****> さんは書きました: > > nomisoです。はじめまして。 > > ・毎朝6時に、あるディレクトリのCSVファイルを読み込み、ファイルの中身を検証したい。 > > > > > > cli版のPHPであれば、以下のように、crontab で phpファイルを直接実行すれば良いと思いますが、 > > ----------------------------------------------------------- > > * * 6 * * * php /hoge/csv_validator.php > > ----------------------------------------------------------- > > はい。そうですね。よくある手法だと思います。 > > ・検証ロジックはCIのValidationクラスを使いたい。 > > > > > > です。 > > > > # CSVの中身を Validation に渡す方法はとりあえず無視するとして・・ > > > > そもそも、この時点でWebアプリケーションではないので、CIを使うという事は、 > > 選択肢からはずすべきなのかもしれません。 > > CIはURIセグメントベースのWebアプリケーションなんで、 > 基本的には、URIからのアクションではないでしょうか。 そうですね。 ただ、 $ php index.php とすれば、Welcomeページが出力されますので、デフォルト コントローラを実行させることは可能かと思います。 と思って、Wiki を調べたら、ありました。 http://codeigniter.com/wiki/Category:Advanced::CronScript/ index.php をコピーして、cron用の index.php (Wiki の例では、clean_cache.php) を作成し、 $_SERVER[’PATH_INFO’] = ‘/cron/cleancache’; のように PATH_INFO をハードコードして実行するコントローラを指定 するところがミソですね。 別段、ハードコードしなくても、引数から取得するようにすれば、 汎用的に使えますね。 あとは、外部公開用の CI と同じ場所にコントローラを設置するなら そのコントローラを外部から起動されないように対策する。 if($_SERVER[’SCRIPT_FILENAME’] != ‘clean_cache.php’) exit; // Kenji