[Codeigniter-users] バッチ処理について

Back to archive index

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




Codeigniter-users メーリングリストの案内
Back to archive index