CakePHP2 shellからコントローラを叩く

  • このエントリーをはてなブックマークに追加
  • Pocket

CakePHP2のshellでModelはすんなり呼べるのにコントローラとコンポーネントを呼び出すのがいまいち意味不明なのでまとめ。

定期的にメールを送信するという非常に鬱陶しいジョブを作ってみる。

cakeを覚える気はないのでなるべくコピペで行きたいこの頃。

環境

  • CakePHP 2.7.6
  • PHP 5.6.18

shellでコンポーネントを使う

いちいちインスタンス化しないといけないようだ。

そしてComponentCollectionが大事らしい。

shellでコントローラを使う

いちいち(ry

コンポーネントよりは呼び出しやすい。

定期的にメールを送信してみる

shellのお作法が分かったところでいざ実践。

  • ReminderShell.php
    • メールを送信させるジョブ
  • RemindController.php
    • shellに叩かれるコントローラ
  • MailComponent.php
    • 実際にメールを送信している処理

app/Console/Command/ReminderShell.php

app/Controller/RemindController.php

コンポーネントの呼び方に注意。

↓これだとShellから叩いた時に使えない。

なのでメソッドの中でロードする。

app/Controller/Component/MailComponent.php

shellを実行する

ググるとコレまた実行の仕方が何通りもある。

まじしおいやん(シレン2)なんだけど。

 

これをcronに書いて終了。

5分おきに送りつけてやる。

cron再起動。

しおかんべん。

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*