我不能为我的生活弄清楚如何从控制器调用shell。
我们有一个后台进程将数据打包在.pdf中,我们不希望陷入等待这种情况发生的页面加载,因此我们希望将所有这些处理放在shell中。
我已经想出如何使用$ this-> args
将值传递给shell我知道你可以使用App :: import('Shell','TestShell')......但之后我迷路了。
如何在控制器中调用shell的main()函数?
答案 0 :(得分:1)
在Cake 1.3中,我通过执行以下操作使其工作:
App::import('Shell', 'Shell');
App::Import('Vendor', array('shells/shell_title'));
$myShell = new ShellTitleShell(new Object());
$myShell->initialize();
$myShell->someAction();
答案 1 :(得分:-1)
我应该更专注地阅读这个问题:/
可以在Cake2中完成,不确定它与1.3的不同之处。 :
<?php
App::import('Console/Command', 'AppShell');
App::import('Console/Command', 'HelloWorldShell');
$h = new HelloWorldShell();
$h->dispatchMethod('main');
?>
<强>窗强>: 如果您没有设置环境变量,则需要提供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()函数。 希望它有所帮助!