【问题标题】:How to run a codeigniter controller function using exec command in php如何在 php 中使用 exec 命令运行 codeigniter 控制器功能
【发布时间】:2014-05-28 05:44:33
【问题描述】:

我在本地窗口系统中使用 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 命令运行函数,谁能帮我解决问题?

【问题讨论】:

  • 确定要使用 URL 而不是文件路径?

标签: codeigniter xampp


【解决方案1】:

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的“Path”环境变量中有php.exe吗?

这个过程应该很简单:你在 Windows 中运行 > "cmd" 并导航到你的 CodeIgniter 项目。

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

【讨论】:

    【解决方案2】:

    我看到你正在使用 Windows。要在 Windows 中执行此操作,我相信 'exec()' 的工作原理就像您在命令提示符下使用“php”命令所做的那样,假设您已安装“php”作为环境变量。

    所以你的 $command 会是

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

    不过,仅供参考,这是一个同步调用。

    如果您想做一个异步操作(很多时候您都希望这样做),那么这种方式是行不通的。 我以前做过一些研究,因为我遇到了这个问题。当您想在 Windows 上异步运行 exec 时,这可能就是您要寻找的。​​p>

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

    希望这有帮助吗?

    托马斯

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 2023-03-13
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 2017-08-07
      相关资源
      最近更新 更多