こんにちは高橋です。最近はドクターペッパーの謎の中毒性に苛まれています。
さて本題です。
シェルの作り方はすごく簡単で、AppShellクラスを継承するだけです。
今回は「TwitterのBotに定期的につぶやかせたい」といったケースを想定して作成していきます。
app/Controller/BotController.php
app/Console/Command/BotShell.php
準備はこれだけです。Botモデルの処理は省略させて頂きました。
これを動かしてみます。
しっかり「hello world.」が表示されていますね!
次は作成したシェルをCronのジョブに追加します。
これでCronが毎時20分と40分にコマンドを実行してくれることになります。
今回は単にメソッドを実行しただけですが、Cakeアプリの一部のため
例えばCakeLogやCakeEmailも簡単に追加できそうで便利だなぁと感じました。
詳しくは公式のドキュメントをご覧ください。
http://book.cakephp.org/2.0/ja/console-and-shells.html
---
余談となりますが、crontab -e はとーっても危険です。 crontab -r がジョブを削除するコマンド(お隣さん!)なので気を付けてください。個人のサーバですが、一度やらかして面倒なことになってしまいました。笑
・恐怖のcrontab -r. 設定ファイルはレポジトリ管理せよ
http://d.hatena.ne.jp/LukeSilvia/20080621/p1
それでは!
さて本題です。
シェルの作り方はすごく簡単で、AppShellクラスを継承するだけです。
今回は「TwitterのBotに定期的につぶやかせたい」といったケースを想定して作成していきます。
app/Controller/BotController.php
- App::uses('AppController',
'Controller'); - class
BotController extends AppController - {
public function tweet() { return $this->Bot->tweet(); //つぶやいた内容をreturnするメソッドとする } - }
app/Console/Command/BotShell.php
- App::uses('TwitterController',
'Controller'); - class
BotShell extends AppShell - {
public function startup() { parent::startup(); $this->TwitterController = new TwitterController(); } public function tweet() { $this->out($this->TwitterController->tweet()); } - }
準備はこれだけです。Botモデルの処理は省略させて頂きました。
これを動かしてみます。
- php
./app/Console/cake.php bot tweet
- php
./app/Console/cake.php bot tweet - Welcome
to CakePHP v2.3.9 Console - ---------------------------------------------------------------
- App
: app - Path:
/Users/yuya/Sites/test/rest/app/ - ---------------------------------------------------------------
- hello
world.
しっかり「hello world.」が表示されていますね!
次は作成したシェルをCronのジョブに追加します。
- crontab
-e
- #bot
- 20,40
* * * * php /var/www/html/project/app/Console/cake.php bot tweet
これでCronが毎時20分と40分にコマンドを実行してくれることになります。
今回は単にメソッドを実行しただけですが、Cakeアプリの一部のため
例えばCakeLogやCakeEmailも簡単に追加できそうで便利だなぁと感じました。
詳しくは公式のドキュメントをご覧ください。
http://book.cakephp.org/2.0/ja/console-and-shells.html
---
余談となりますが、crontab -e はとーっても危険です。 crontab -r がジョブを削除するコマンド(お隣さん!)なので気を付けてください。個人のサーバですが、一度やらかして面倒なことになってしまいました。笑
・恐怖のcrontab -r. 設定ファイルはレポジトリ管理せよ
http://d.hatena.ne.jp/LukeSilvia/20080621/p1
それでは!