如何在php中使用exec命令运行codeigniter控制器函数

时间:2014-04-14 09:58:24

标签: codeigniter xampp

我正在使用xampp和我的本地窗口系统。 现在有一天我正在使用codeigniter,我正在尝试将mycontroller函数作为后台作业运行。像

class Admin extends MX_Controller{
    function __construct(){
        parent::__construct();
    }

    function index(){
        echo "working";
        $command = "D:\xampp\php\php D:\xampp\htdocs\client\newslatter\index.php  admin preget";
        echo $out = exec( $command);
        echo "here";
    }

    function preget(){
        echo "<br/>Done!!!!!!";
    }
}

我无法使用exec命令运行一个函数可以帮助解决我的问题吗?。

2 个答案:

答案 0 :(得分:0)

CodeIgniter在其手册中有一个与此完全相同的页面:

http://ellislab.com/codeigniter/user-guide/general/cli.html

注意,在你的命令中,你只是把路径放到文件中,你没有添加“php”

$ command =“php D:\ xampp \ php \ php D:\ xampp \ htdocs \ client \ newslatter \ index.php admin preget”;

也许这可以解决你的问题。

你的windows的“路径”环境变量中有php.exe吗?

这个过程应该很简单:你运行&gt; Windows中的“cmd”并导航到CodeIgniter项目。

$ cd / path / to / project; $ php index.php YourController ControllerMethod

答案 1 :(得分:0)

我看到你正在使用Windows。要在Windows中执行此操作,我相信'exec()'的工作方式就是使用“php”命令调用命令提示符,假设您已安装“php”作为环境变量。

所以你的$命令将是

$command = "php D:\xampp\php\php D:\xampp\htdocs\client\newslatter\index.php admin preget";

但是,仅供参考,这是同步通话。

如果你想做一个异步的(很多时候你想要),它就不会这样。 我之前做过一些研究,因为我遇到了这个问题。当您想在Windows上使用异步运行exec时,这可能是您正在寻找的。

$WshShell = new COM('WScript.Shell'); 
$oExec = $WshShell->Run('php D:\xampp\php\php D:\xampp\htdocs\client\newslatter\index.php admin preget', 0, false);

希望有帮助吗?

托马斯