在命令行上运行yii controller / action

时间:2013-04-30 13:11:49

标签: command-line yii

是否可以在linux命令行上运行yii controller / action,就像CodeIgniter一样?

CI风格: php index.php控制器动作

3 个答案:

答案 0 :(得分:2)

class NotifyUnsharedItemsCommand extends CConsoleCommand
{
    public function run($args)
    {
        $action = Yii::createComponent('application.controllers.actions.NotifyUnsharedItemsAction',$this,'notify');
        $action->run();
    }
 }

答案 1 :(得分:1)

除了发出GET请求之外,我不知道从命令行运行控制器/操作,但是有些yii控制台应用程序(而不是Web应用程序)可能会考虑在这里查看{{3} }。我不确定你想要达到的目标,所以很难知道它是否适合你。

Yii控制台应用程序派生自与Web应用程序相同的基类,因此您可以使用与Web应用程序相同的资源。

答案 2 :(得分:0)

在CodeIgniter文件夹的根目录下创建“cli.php”文件

if (isset($_SERVER['REMOTE_ADDR'])) {
    die('Command Line Only!');
}

set_time_limit(0);

$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = $argv[1];

require dirname(__FILE__) . '/index.php';

如果您在Linux环境中并希望使此脚本可自行执行,则可以将其添加为cli.php中的第一行:

!在/ usr / bin中/ PHP

如果您希望特定控制器仅为命令行,则可以在控制器构造函数中阻止Web调用:

class Hello extends Controller {

    function __construct() {
        if (isset($_SERVER['REMOTE_ADDR'])) {
            die('Command Line Only!');
        }
        parent::Controller();
    }

    // ...

}