December 21, 2011

FuelPHPのTasks

FuelPHP Advent Calendar 2011 21日目です。
@madmamor です。

昨日は @kenji_s さんの
FuelPHP でのセキュリティ対策(1)
でした。

今日は、FuelPHPのTasksについて書きます。
ドキュメントは、以下になります。

公式:
http://docs.fuelphp.com/general/tasks.html
日本語:
http://press.nekoget.com/fuelphp_doc/general/tasks.html

早い話が、コマンドラインやcronで実行できるFuelPHPのクラスです。
ローカルでも実行できますが、今回は、せっかくなのでサーバでやってみました。


尚、以下の方法でインストールを試みましたが、エラーが出てしまい、
とりあえずwgetでDLして解凍しました。
http://docs.fuelphp.com/installation/instructions.html
http://press.nekoget.com/fuelphp_doc/installation/instructions.html

DL/解凍する場所は、どこでも良いです。
phpのバージョンが5.2系以前では動きませんので注意して下さい。FuelPHPは5.3.xで動作します。
以下、FuelPHPに標準で入っているTasksのRobotsクラスを扱って話を進めます。

--
%wget --no-check-certificate https://github.com/downloads/fuel/fuel/fuelphp-v1.1.zip
%unzip fuelphp-v1.1.zip
%cd fuelphp-v1.1
%php oil refine robots
--

 
                                        "KILL ALL HUMANS!"
                                  _____     /
                                 /_____\
                            ____[\*---*/]____
                           /\ #\ \_____/ /# /\
                          /  \# \_.---._/ #/  \
                         /   /|\  |   |  /|\   \
                        /___/ | | |   | | | \___\
                        |  |  | | |---| | |  |  |
                        |__|  \_| |_#_| |_/  |__|
                        //\\  <\ _//^\\_ />  //\\
                        \||/  |\//// \\\\/|  \||/
                              |   |   |   |
                              |---|   |---|
                              |---|   |---|
                              |   |   |   |
                              |___|   |___|
                              /   \   /   \
                             |_____| |_____|
                             |HHHHH| |HHHHH|

%php oil refine robots

%php oil r robots
としても良いです。
このコマンドにより、fuel/app/tasks/robots.phpのrunメソッドが実行されます。
1つの処理だけなら、runメソッドのみ実装すれば良さそうです。

%php oil r robots "Kill all Mice"
とすれば、runメソッドに対して"Kill all Mice"を引数として与えることがでできます。

また、fuel/app/tasks/robots.phpには、runメソッドとは別にprotectメソッドがあります。
%php oil r robots:protect
とすれば実行できます。
runメソッド以外を実装して実行する場合はこの形になるようです。

 
                                        "PROTECT ALL HUMANS"
                                  _____     /
                                 /_____\
                            ____[\*---*/]____
                           /\ #\ \_____/ /# /\
                          /  \# \_.---._/ #/  \
                         /   /|\  |   |  /|\   \
                        /___/ | | |   | | | \___\
                        |  |  | | |---| | |  |  |
                        |__|  \_| |_#_| |_/  |__|
                        //\\  <\ _//^\\_ />  //\\
                        \||/  |\//// \\\\/|  \||/
                              |   |   |   |
                              |---|   |---|
                              |---|   |---|
                              |   |   |   |
                              |___|   |___|
                              /   \   /   \
                             |_____| |_____|
                             |HHHHH| |HHHHH|

さらに、以下のように、フルパスでも実行可能です。結果は同じです。
php /home/[username]/xxx/yyy/fuelphp-v1.1/oil r robots

このような感じで、DLして即、実行できます。

fuel/app/tasks/robots.phpを参考に、必要な処理(クラスとメソッド)を実装。
これをcronで実行するようにしておけば、わりとあっさりいけそうです。

尚、サーバによってはphpコマンドで反応するphpのバージョンが古い可能性があります。
以下のようにしないといけないかもしれません。。。
/usr/local/php/5.3.8/bin/php /home/[username]/xxx/yyy/fuelphp-v1.1/oil r robots



P.S.
いろいろなライブラリを適当に寄せ集めてやっつけで作った
cron用の各種プログラムをFuelPHPのTasksでリプレイスしたい。。。



明日は @kenji_s さんの
FuelPHP でのセキュリティ対策(2)
の予定です。

No comments:

Post a Comment