2系になってからシェルを作ってなかったので、メモがてら残しておこう。
ファイルの保存場所は app/Console/Command/
AppStoreShell.php
ファイル名、クラス名はキャメルケースで付けるのが2系。
コントローラだとデフォルトアクションがindex()だけど、シェルはmain()だと思えばおk。
コンソールのコマンドラインから直接実行する場合は、以下の形式で実行できる。
上記例のクラス名がAppStoreShellなので、渡す引数のクラス名はapp_storeである。
class AppstoreShell〜だったらappstoreになるよ。
※/path/to/appはCakePHPを展開したディレクトリ
※cakeにパスが通っていない場合は.bash_profileなどでPATH=/path/to/lib/Cake/Console
※ちなみに、ユーザファイルのapp/Console/cakeでもOK(かも)
※どこからでもcakeコマンドは実行できるようになるが、結局-appでCakePHPのapp/ディレクトリを指定していないと変なエラーがでる(気がする)
cronで実行させる場合
$ crontab -e
ファイルの保存場所は app/Console/Command/
AppStoreShell.php
<?php
class AppStoreShell extends AppShell {
public function main(){
$this->out('Hello, AppStore');
}
public function test(){
$this->out('test dayo');
}
}
ファイル名、クラス名はキャメルケースで付けるのが2系。
コントローラだとデフォルトアクションがindex()だけど、シェルはmain()だと思えばおk。
コンソールのコマンドラインから直接実行する場合は、以下の形式で実行できる。
$ cake -app /path/to/app app_store
Welcome to CakePHP v2.1.3 Console
---------------------------------------------------------------
App : app
Path: /path/to/app/
---------------------------------------------------------------
Hello, AppStore
$ cake -app /path/to/app app_store test
上記例のクラス名がAppStoreShellなので、渡す引数のクラス名はapp_storeである。
class AppstoreShell〜だったらappstoreになるよ。
※/path/to/appはCakePHPを展開したディレクトリ
※cakeにパスが通っていない場合は.bash_profileなどでPATH=/path/to/lib/Cake/Console
※ちなみに、ユーザファイルのapp/Console/cakeでもOK(かも)
※どこからでもcakeコマンドは実行できるようになるが、結局-appでCakePHPのapp/ディレクトリを指定していないと変なエラーがでる(気がする)
cronで実行させる場合
$ crontab -e
* * * * * /usr/local/bin/php /path/to/app/Console/cake.php app_store > /dev/null 2>&1Consoleの下にcake.phpがあるのでそれを実行する。