2012-03-26 158 views
0

我有一个使用CakePHP以非常MVC的方式编写的应用程序。我现在需要在应用程序中执行一个shell脚本。 CakePHP是否提供了执行shell脚本的方法?即有没有什么内置的做或不做?我正在使用CakePHP 2.从Cake运行shell脚本PHP

非常感谢:)。

回答

10

是的,您可以轻松地从应用程序内手动执行shell脚本。 在2.X这比在1.3等更容易:

App::uses('MyShell', 'Console/Command'); 
$this->My = new MyShell(); 
$this->My->myMethod(); 

我用它来测试我写测试用例里面的贝壳。但它也可以在应用程序:) :)

类似的任务。 我在我的TranslatePlugin中使用它来直接从控制器/模型级别执行某些特定设置的核心的ExtractTask。

请注意,如果您有一些特定的shell脚本,则可能必须添加/传递一些手动ConsoleOutput类。 如果可能的话,将代码移动到任务(不是shell!)会更好。 更好的是,将它移动到Lib或其他通用文件中,您可以从shell和普通应用程序代码中分派它。这将是这个问题上最干净的方法。

+0

正是我在找:)。非常感谢你。 – ale 2012-03-27 08:11:37

+0

感谢您的支持!对于使用CakePHP Queue插件并想测试任务的其他人,您应该这样做:App :: uses('QueueMyTask','Plugin/Queue/Console/Command/Task'); – 2015-01-20 17:39:06

0

不直接,没有。 Shell脚本 - 顾名思义 - 意味着从shell运行,而不是在应用程序中运行。

虽然,有一些指标可以让你的应用程序与你的shell在deizel的this question的答案中进行交互。