EthnaでCLI(コマンドラインインターフェース)用のプログラムを書く

Ethnaではゲートウェイを変更することでwebアプリ用のプログラムだけではなくて、サーバーで定期稼働させたりするコマンドラインのプログラムを作ることもできる。
ethnaコマンドを使ってスケルトン作成。feedcrawle2というプログラムの名前で作ってみる。

% ethna add-entry-point --gateway=cli feedcrawle2


file generated [/Users/〜/pj/feeddown/skel/skel.entry_cli.php -> /Users/〜/pj/feeddown/bin/feedcrawle2.php]
action script(s) successfully created [/Users/〜/pj/feeddown/bin/feedcrawle2.php]
file generated [/Users/〜/pj/feeddown/skel/skel.action_cli.php -> /Users/〜/pj/feeddown/app/action_cli/Feedcrawle2.php]
action script(s) successfully created [/Users/〜/pj/feeddown/app/action_cli/Feedcrawle2.php]

これを実行すると、Ethnaのプロジェクトディレクトリに上の実行結果の通りファイルが作成される。

  • ~/bin/feedcrawle2.php
  • ~/app/action_cli/feedcrawle2.php

あとは、webアプリをEthnaで書くときと同じ様にapp/action_cli/以下のModelをコーディングしていけばよい。
プログラムの実行は、

php -q bin/feedcrawle2.php

とすればよい。
ActionClassを継承しているので、$this->backend等々、普通に使える。
ただし、コマンドラインの引数を取得する仕組みは無い*1ので、グローバル変数 $_SERVER['argv']から取得する形になりそう。(これが正しいのかは現状、謎。)


今までこの仕組み使わずにそのまま直書きしていたのは愚かであった。徐々に書き直して行こうと思う。

*1:無いように思われる。というのが正解。