cakephp初日メモ。
Controllerのアクションから、シェルクラスのメソッドを呼び出す方法。
App::uses('AppShell','Console/Command');
App::uses('WatashiShell','Console/Command');
・
・
$shell = new WatashiShell();
$shell->startup();
$shell->onore();
説明
クラスの冒頭で、App::usesというお決まりの手法で、呼び出したいターゲットファイルと、(ほとんどのshellファイルが継承しているであろう)親のAppShellを読み込み。
呼び出したい対象のメソッドonore()だとして、まずstartup()を呼び出して、対象のonore()を呼び出す順番になります。
App::uses();の記法
App::uses('{対象ファイル}','{appより下から、対象のディレクトリまでのパス}');
Shellのファイルごとまるっと実行させたい場合
exec('php /{鯖のルートからプロジェクトルートまでのパス}/{プロジェクト名}/app/Console/cake.php {Shellプログラム名をキャメル方式からアンスコ方式にして記載} {必要あれば引数を記載} /tmp/hogehoge > /dev/null &')
例
ex)
exec('php /var/www/hoge/htdocs/hogehoge/app/Console/cake.php fuga 1 /tmp/monya > /dev/null &')
ex2) もうちょっとリアルに
exec('php ' . APP . 'Console' . DS . 'cake.php fuga ' . $this->id . ' ' . Hash::get($sessionInfo, self::S_NAME_TARGET) . ' >> ' . Configure::read('FUGAPATH') . ' &');
補足
参考