シェルスクリプトからFuelPHPで組んだ処理を呼び出す
fuelphpでコマンドラインプログラムを作る方法 - ぎじゅっやさん
フレームワークのないPHPなんてもう触ってられないですよ。一度知った味は忘れられない。
(と言いながら、今週はフレームワーク無しのPHPプログラムをメンテナンスしてました。このソース、オブジェクト指向にもなってないのでほんとうに大変。リファクタリングしようにもテストコード書けないし…)
cronから呼んで自動実行させたい処理があり、シェルスクリプトからFuelPHPを呼べないかと調べてみて、目からウロコ。
そうですよね、oilがまさにその役目をしてるんですよね。最初に気づくべきでした orz
…気を取り直して。
はじめにご紹介したURLを参考に、処理を実装。
ファイルは「fuel/app/tasks」以下に配置することになります。
例えばこんなかんじで処理を書いてみる。
fuel/app/tasks/hello.php
<?php
namespace Fuel\Tasks;class Hello
{
public static function run($name = null)
{
if ( is_null($name) )
{
$name = 'hoge';
}\Cli::write('Hello, '. $name. '!');
}
}
不要ファイルの削除とかをしていなければ「robots.php」があるはずなのでそれで書き方を確認するも良し。
呼び出しと結果はこんな感じ。
$ oil r hello*1
Hello, hoge!
$ oil r hello asano
Hello, asano!
最終的には、crontabやシェルスクリプト内から
で呼び出せばOK。
対象のFuelPHPプロジェクトディレクトリにあるoilのパスを明示的に指定しないとエラーになります。(当たり前といえば当たり前ですが)
これでPHPでシェルスクリプトからのDB接続もメール送信もラクラクですね。積極的に使っていこうと思います。
*1:r は refine の省略形