4

是否可以像使用 CodeIgniter 一样在 linux 命令行上运行 yii 控制器/动作?

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

4

3 回答 3

3
class NotifyUnsharedItemsCommand extends CConsoleCommand
{
    public function run($args)
    {
        $action = Yii::createComponent('application.controllers.actions.NotifyUnsharedItemsAction',$this,'notify');
        $action->run();
    }
 }
于 2013-07-23T02:58:56.697 回答
1

除了发出 GET 请求之外,我不知道从命令行运行控制器/操作,但是您可能会考虑在这里查看 yii 控制台应用程序(而不是 Web 应用程序)http://www.yiiframework .com/doc/guide/1.1/en/topics.console。我不确定您要达到的目标,因此很难知道它是否对您有用。

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

于 2013-04-30T19:08:42.640 回答
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();
    }

    // ...

}
于 2013-07-23T07:00:24.553 回答