yii cli模式 杂记

按照网络上一般的套路,就是在网站根目录下,新建一个php文件,例如index_cli.php,内容如下:

<?php
$yiic=dirname(__FILE__).'/../yii/framework/yiic.php';
$config=dirname(__FILE__).'/protected/config/console.php';

// remove the following line when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);

require_once($yiic);
Yii::createConsoleApplication($config)->run();

config目录下的console.php或者main.php都是可以。关键的参数配置正确就可以,例如数据库连接。

然后,在protected/commands下建立一个类文件,例如TestCommand.php,内容如下:

<?php

class TestCommand extends CConsoleCommand
{
    public function actionIndex(){
        $DbConnection = Yii::app()->db;
        $sqlstr = "select * from test";
        $command = $DbConnection->createCommand($sqlstr);
        $viewdata = $command->queryAll();

        foreach ($viewdata as $key => $val){
            echo $val['leftmoney'];
        }
    }
}

然后,在命令行运行:

php index_cli.php test index

就可以看到sql语句的内容。

但发现踩了几个坑。

第一坑:
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) ‘mbstring.so’ in Unknown on line 0

这个是由于php编译时修改了php.ini导致,最后修改php.ini,把extension=mbstring.so屏蔽,即在最前面加;,然后重启php-fpm,如果用apache的,直接重启apache。就可以解决问题。(编译了新的 php模块进来后,不一定要增加extension的配置)

第二坑:
发现网上很多介绍在入口文件要加入:

Yii::createConsoleApplication($config)->run();

但发现加了后反而会出现

Yii application can only be created once.

的错误,去除后却能正常运行。

所以,最终修改成index_cli.php,内容如下:

<?php
$yiic=dirname(__FILE__).'/../yii/framework/yiic.php';
$config=dirname(__FILE__).'/protected/config/console.php';

// remove the following line when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);

require_once($yiic);

command下的文件不变,然后在命令行运行:

php index_cli.php test index

index_cli.php为入口文件,test是protected/command文件夹下的类名,index是test类下的action方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值