2012-07-05 74 views
0

我不能为我的生活弄清楚如何从控制器调用一个shell。CakePHP 1.3 - 从控制器调用shell?

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

我已经找到了如何将值传递与$这个 - > ARGS

我知道你可以使用App ::进口(“壳牌”,“TestShell”)......但之后,我搞不清楚了。

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

+0

婉婷运行来自控制器的外壳是一个典型的模型代码的一个非常明确的指标(可通过调用控制器和外壳)不属于模型。 – AD7six 2014-06-19 09:30:02

回答

-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()函数将被默认调用。 希望它有帮助!

+0

这些都是很奇怪的cli用法示例-1 – AD7six 2014-06-11 17:46:00

+0

这是怎么回事?它只是绝对路径,以防你没有定义这些路径。 – Mo3z 2014-06-19 01:32:41

+0

那么,这个问题不是关于cli的用法,更不是在一个borked环境中cli的用法。所以与'cd/var/www/html/cakephp/app; ../cake/console/cake测试...' - 这些例子很奇怪。如果php不在路径中 - 这是不正常的,并且需要解决的问题不能解决。 – AD7six 2014-06-19 09:29:25

1

在蛋糕1.3,我能得到它做的工作如下:

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

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