22
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CakePHP: ControllerからShellプログラムを実行する方法

Posted at

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') . ' &');

補足

・APPについてはこちら
・DSについてはこちら

参考

22
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?