PHP

Codeigniterでバッチ処理に役立つcron.php

curl コマンドを使って Web 経由で叩いていた一部のバッチ処理を、cron.php を使って動作させるようにしました。

どちらにしても、シェルから実行させるのには変わりないのですが、リクエストのタイムアウトや、nginx, apache のリソースを考えると、php クライアントから直接実行できるに越したことはありません。

cron.php の呼び出しは Codeigniter で作ったコントローラやメソッドを指定するだけなので、Web アプリ向けの処理がそのまま使えるメリットもあります。

また、config などを環境ごとにディレクトリ分けしている場合、nginx や apache の環境変数に「production」や「staging」「development」などを持たせているケースもあると思いますが、cron.php を使う場合は export コマンドで env に設定しておけば大丈夫です。

cron.phpのダウンロード

現状、cron.php の最新版は 2013 年が最終更新ということで間が空いていますが、Codeigniter のバージョン 2 では問題なく動作を確認しています。

Codeigniter も 2015 年にバージョン 3 が発表され間もなく 1 年が経過するので、バージョン 3 での動作確認もしておきたいところですが、まだバージョン 2 を使っているので、本体のバージョンアップを含めこれは今後の課題ということで。

さて、cron.php は以下からダウンロードができます。詳細は README.md を確認してみてください。

cron.phpの使い方

基本的な使い方は以下の通り、Web からの呼び出しと同じくコントローラとメソッドをスラッシュで区切って –run に渡すだけです。

ログの出力先なども選択できるので、バッチ運用も楽になると思います。

また、環境変数は例えば ENVIRONMENT という変数を nginx や apache で使用している場合、cron.php の呼び出し前に export で ENVIRONMENT に必要な値を設定しておけば問題ありません。