【问题标题】:CakePHP 1.3 - Calling Shells from a Controller?CakePHP 1.3 - 从控制器调用外壳?
【发布时间】:2012-07-06 06:03:09
【问题描述】:

我终其一生都无法弄清楚如何从控制器调用 shell。

我们有一个将数据打包成 .pdf 的后台进程,我们不想让页面加载陷入等待,因此我们希望将所有这些处理放在一个 shell 中。

我已经弄清楚如何使用 $this->args 将值传递给 shell

我知道你可以使用 App::import('Shell','TestShell')... 但在那之后我迷路了。

如何在控制器中调用 shell 的 main() 函数?

【问题讨论】:

  • 想要从控制器运行 shell 通常是模型代码(控制器和 shell 都可以调用)的一个非常明确的指标不在模型中.

标签: shell cakephp controller cakephp-1.3


【解决方案1】:

在 Cake 1.3 中,我可以通过执行以下操作使其正常工作:

App::import('Shell', 'Shell');
App::Import('Vendor', array('shells/shell_title'));

$myShell = new ShellTitleShell(new Object());
$myShell->initialize();
$myShell->someAction();

【讨论】:

    【解决方案2】:

    我应该更专注于阅读这个问题:/

    可以在 Cake2 中实现,不确定 1.3 会有多大不同。 :?

    <?php
    App::import('Console/Command', 'AppShell');
    App::import('Console/Command', 'HelloWorldShell');
    $h = new HelloWorldShell();
    $h->dispatchMethod('main');
    ?>
    

    Windows: 如果您没有设置环境变量,则需要提供 PHP 可执行文件的位置。

    C:\wamp\bin\php\php_v\php.exe C:\wamp\www\cakephp\cake\console\cake.php test this_arg_0 this_arg_1
    

    Linux: 您可能已经定义了您的 php 位置。如果没有,您可能需要将其导出到 $PATH 或提供 php 的完整路径

    php /var/www/html/cakephp/cake/console/cake.php test this_arg_0 this_arg_1
    

    main() 函数将被默认调用。 希望对您有所帮助!

    【讨论】:

    • 这些是奇怪的 cli 使用示例 -1
    • 这有什么奇怪的?它只是绝对路径,以防您没有定义这些路径。
    • 好吧,问题根本不在于 cli 的使用,更不用说在糟糕的环境中使用 cli。所以与cd /var/www/html/cakephp/app; ../cake/console/cake test ... 相比——这些例子很奇怪。如果 php 不在路径中 - 这是不正常的,并且无法解决的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多