yii框架中使用php(xampp)的mongodb扩展和应用总结

最近要用到Yii框架,要求访问mongodb数据库,查询结果后在页面显示。本以为就和访问Mysql一样方便,没想到却有如此多的坑。害怕以后忘掉了,所以记录一下。

一开始没啥经验,直接在百度搜“Yii框架 mongodb”字样,结果搜出来了“Yii框架 使用Mongodb扩展—YiiMongoDbSuite”。就按照教程把压缩包下载下来,配置配好了,整个步骤如下:

(1)下载好插件后解压到protected > extensions目录 我将文件夹命名为YiiMongoDbSuite,然后找到配置文件protected > config > main.php 在"半自动加载模型组件配置"的地方加载我们需要的YiiMongoDbSuite插件代码如下:

'import'=>array(
    'application.models.*',
    'application.components.*',
    'ext.YiiMongoDbSuite.*',
),
然后配置下mongo数据库链接代码如下:

'mongodb' => array(
    'class'            => 'EMongoDB', //主文件
    'connectionString' => 'mongodb://127.0.0.1:27017', //服务器地址
    'dbName'           => 'test',//数据库名称
    'fsyncFlag'        => true, //mongodb的确保所有写入到数据库的安全存储到磁盘
    'safeFlag'         => true, //mongodb的等待检索的所有写操作的状态,并检查
    'useCursor'        => false,
),
数据库连接好后我们来操作数据库,看看模型(model)代码:

class User extends EMongoDocument {
    public $z;
    public static function model($className = __CLASS__){
        return parent::model($className);
    }

    public function getCollectionName()
    {
        return 'foo';
    }

    public function addInfo() {
        $this->z='1234';
        $this->save();
    }
}
然后在controller里面配置代码:

public function actionIndex(){
    $model = new User();
    $model->addInfo();
}
好了,信心满满的想刷新一下网页看看效果,queue得到一个信息,类似于class(Mongo.php) not find 这种错误。

看来是哪里配置出问题了,把错误信息google一下,看了好久,貌似有人说驱动?第一次接触php连接mongodb,有点不懂。有说需要php_mongo.dll的,有说需要php_mongodb.dll的,简直看花了眼。最后搜到菜鸟上面教程,说:

到现在开始明白了,php中连接mongodb和使用什么框架没啥关系,是PHP驱动。于是去下载驱动:


有好多,不知道下哪个,而且为什么有的名字叫mongo,有的名字叫php_mongo。于是我随便下载了几个安装包,然后按照教程,把dll文件放到xampp\php\ext文件夹下面,在php.ini中写好extension=php_mongo.dll,重启xampp的apache服务,刷新页面,依然报错。


于是继续搜索,好多文章只是写了如何如何操作(上面步骤),觉得人家操作都好容易啊,为啥我的就不行了。直到后面看见了另外一篇文章:《PHP-xampp-mongodb扩展》

,上面写道:

就在这时,我看到一篇文章在查看php_version的时候是在命令行打 php -version的方法,说正确安装mongodb的话会显示mongodb的版本,我试了一下,竟然提示出错了!!!

Php Startup : Unable to load dynamic library 'D:\xampp\php\ext\php_mongo.dll ' - 该文件不是有效的win32程序


我去我的xampp面板的shell测试了一下,输入php -v也是报这个错误。于是我又仔仔细细的把文章看了一下,才明白,下载的dll文件,要和php版本对应,其次,选择dll文件时x86和x64是值得Apache版本,而不是系统版本,最后如果php是作为apache的一个模块运行的话,要下载thread safe(ts)版本。ok,去下载:http://pecl.php.net/package/mongo/1.5.5/windows

继续考入文件夹,修改php.ini文件,在controller的actionindex()下面输入phpinfo()后,出现了mongodb的栏位,代表装成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值