【问题标题】:Running shell scripts from Cake PHP从 Cake PHP 运行 shell 脚本
【发布时间】:2012-03-27 05:35:56
【问题描述】:

我有一个使用 Cake PHP 以非常 MVC 方式编写的应用程序。我现在需要从应用程序中执行一个 shell 脚本。 Cake PHP 是否提供了一种执行 shell 脚本的方法? IE。有没有内置的东西可以做到这一点?我正在使用 CakePHP 2。

非常感谢:)。

【问题讨论】:

    标签: cakephp cakephp-2.0


    【解决方案1】:

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

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

    我用它来测试我在测试用例中编写的 shell。但它也可以在应用程序中工作:)

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

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

    【讨论】:

    • 正是我想要的:)。非常感谢。
    • 谢谢!对于其他使用 CakePHP Queue 插件并想要测试任务的人,您可以这样做:App::uses('QueueMyTask', 'Plugin/Queue/Console/Command/Task');
    【解决方案2】:

    不直接,不。顾名思义,Shell 脚本旨在从 shell 而非您的应用程序中运行。

    尽管,在 deizel 对this question 的回答中,有一些提示可以让您的应用与您的 shell 交互。

    【讨论】:

      猜你喜欢
      • 2012-03-28
      • 1970-01-01
      • 2012-01-15
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      相关资源
      最近更新 更多