您的位置:首页 > 数据库 > Mongodb

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

2017-11-10 09:05 489 查看
最近要用到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的栏位,代表装成功了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: