Chinaunix首页 | 论坛 | 博客
  • 博客访问: 120896
  • 博文数量: 16
  • 博客积分: 383
  • 博客等级: 一等列兵
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 11:43
文章分类

全部博文(16)

文章存档

2014年(1)

2012年(3)

2011年(12)

分类: 数据库开发技术

2012-01-05 15:11:55

在php当中使用mongodb
下载mongodb的php扩展包,并编译, 这里用mongo-1.2.6,解压后编译方法如下:
  1. cd /tmp/mongodb-1.2.6
  2. /opt/php/bin/phpize 在mongodb-1.2.6文件夹下产生configure文件
  3. 配置编译
    ./configure --with-php-config=/opt/php/bin/php-config --with-mongodb
    make && make install

成功编译好后,产生一个mongo.so文件,将它移到php扩展所在目录,这里为:/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613

接着需要修改/usr/local/lib下(编译php时指定的php.ini的路径) php.ini,找到 extension=modulename.extension,在下面一行添加extension=mongo.so,注意和windows写法的差异,重新启动apache,在网站根目录新建一个test.php文件,看phpinfo有没有侦探到mongodb模块。

我这里并没有侦探这个模块,因此怀疑是php.ini没加载,但test页面显示确实正确加载了php.ini的路径,下面也确实存在php.ini这个文件。网上搜了下这个问题,发现很多网友碰到过同样的问题,windows比较好办, 一般做法:通过设置PHPRC 环境变量,

  a)       操作:右击我的电脑->属性->高级->环境变量

  b)       在系统变量下新建一个“变量名为PHPRC   ,变量值为你的php.ini文件所地文件路径”的环境变量

详见:,一般这样设置是没问题的,即使不用设置PHPIniDir的值,为了保险还是设置下这个值吧,刚接触php的时候经常遇到这个问题,非常郁闷。

查看了apache日志发现是mongodb路径没找到,于是重新检查了下php.ini,extension_dir的位置,这里为/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613,比较长所以弄错了,另外配置文件没找到可以在apache的配置文件中指定就ok了,在以下一行LoadModule php5_module        modules/libphp5.so添加
               PHPIniDir '/usr/local/lib/php.ini'

重启apache就找到mongodb模块扩展啦

配置后mongodb的php扩展后就可以在php程序中使用mongodb数据库了,这里写了个简单的脚本,mongo.php

 

  1. <?php
  2. /**mongodb会默认连接本地的
  3.  *查询返回是一个数据对象,详见mongodb的php部分api
  4.  */
  5. $m = new Mongo();
  6. $db = $m->test;
  7. $data = array('a'=>'php');
  8. $db->foo->insert($data);
  9. $data = $db->foo->find();

  10. foreach($data as $obj){
  11.         echo $obj['a'].'
    '
    ;
  12. }

  13. ?>

访问,将返回如下:

1
2
3
4
5
6
7
8
9
10
php
php
php

更多复杂操作详见mongodb的php api部分,mongodb语法类似于mysql的sql语句,两者的简单对比,有实验显示mongodb比mysql效率更高,,继续探索实验中。。。




 

阅读(2752) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~