是否可以像使用 CodeIgniter 一样在 linux 命令行上运行 yii 控制器/动作?
CI 风格:php index.php 控制器动作
class NotifyUnsharedItemsCommand extends CConsoleCommand
{
public function run($args)
{
$action = Yii::createComponent('application.controllers.actions.NotifyUnsharedItemsAction',$this,'notify');
$action->run();
}
}
除了发出 GET 请求之外,我不知道从命令行运行控制器/操作,但是您可能会考虑在这里查看 yii 控制台应用程序(而不是 Web 应用程序)http://www.yiiframework .com/doc/guide/1.1/en/topics.console。我不确定您要达到的目标,因此很难知道它是否对您有用。
Yii 控制台应用程序源自与您的 Web 应用程序相同的基类,因此您可以使用与您的 Web 应用程序相同的资源。
在 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 中的第一行:
如果您希望特定控制器仅作为命令行,您可以在控制器构造函数中阻止 Web 调用:
class Hello extends Controller {
function __construct() {
if (isset($_SERVER['REMOTE_ADDR'])) {
die('Command Line Only!');
}
parent::Controller();
}
// ...
}