2016-09-15 122 views
1

私はCakePHPシェルで特定のタスクを持っており、CRONジョブによって実行されます。しかし、私は、ユーザーが望むたびにWebインターフェイス(ボタンのようなものなど)から実行できるようにしたいと考えています。コントローラからシェルを実行するCakePHP 3.x

私の質問は、コントローラからシェルを実行することは可能ですか?

はコントローラでこれをエミュレート:

bin/cake MyShell 

を、私はそれは、CakePHPの以前のバージョンで可能だったけど、私は最新バージョンではこれに関連する何かを見つけることができませんでした。 exec( "bin/cake MyShell")は本当に汚いようです。

+3

をexcuteしたいために、その機能のいずれか、呼び出しをシェルオブジェクトを作成します。https://github.com/dereuromark/をcakephp-queue –

+2

うん、これは正しい方法です。それ以外の場合は、同期を行いたい場合。 DONTではシェルを使用しますが、コードをビジネスクラスに入れ、コントローラから直接呼び出すだけです。 – mark

+0

@ka_lin、ありがとう、私はこのプラグインをチェックします! – Zat42

答えて

1

このプラグイン(役立つかもしれない)が見つかり、あなたがキューの仕事を必要とする

$myShell = new \App\Shell\MyShell; 
$myShell->anyShellFun(); 
+1

あなたはまだそれをするべきではありません、それはコミュニケーションの完全な別の層です、それらを混ぜることは悪いパターンです。 – mark

関連する問題