0

我一生都无法弄清楚如何从控制器调用外壳。

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

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

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

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

4

2 回答 2

1

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

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

$myShell = new ShellTitleShell(new Object());
$myShell->initialize();
$myShell->someAction();
于 2014-02-10T23:43:24.427 回答
-1

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

可以在 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() 函数将被默认调用。希望能帮助到你!

于 2012-07-05T21:25:59.660 回答