phpmongodb扩展linux
⑴ php 怎么进入mongodb
在linux、window、Mac平台上安装MongoDB扩展
Linux上安装 MongoDB PHP扩展
在终端上安装
可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动
$ sudo pecl install mongo
使用php的pecl安装命令必须保证网络连接可用以及root权限。
安装手册
如果想通过源码来编译扩展驱动。必须手动编译源码包,这样做的好是最新修正的bug包含在源码包中。
可以在Github上下载MongoDB PHP驱动包。访问github网站然后搜索"mongo php driver"(下载地址:https://github.com/mongodb/mongo-php-driver),下载该源码包,然后执行以下命令:
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ phpize
$ ./configure
$ sudo make install
如果php是编译的,则安装方法如下(假设是编译在/usr/local/php目录中):
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ sudo make install
执行以上命令后,你需要修改php.ini文件,在php.ini文件中添加mongo配置,配置如下:
extension=mongo.so
注意:你需要指明 extension_dir 配置项的路径。
window上安装 MongoDB PHP扩展
Github上已经提供了用于window平台的预编译php mongodb驱动二进制包(下载地址:https://s3.amazonaws.com/drivers.mongodb.org/php/index.html),可以下载与php对应的版本,但是需要注意以下几点问题:
VC6 是运行于 Apache 服务器
'Thread safe'(线程安全)是运行在Apache上以模块的PHP上,如果以CGI的模式运行PHP,请选择非线程安全模式(' non-thread safe')。
VC9是运行于 IIS 服务器上。
下载完需要的二进制包后,解压压缩包,将'php_mongo.dll'文件添加到PHP扩展目录中(ext)。ext目录通常在PHP安装目录下的ext目录。
打开php配置文件 php.ini 添加以下配置:
extension=php_mongo.dll
重启服务器。
通过浏览器访问phpinfo,如果安装成功,就会看到类型以下的信息:
MAC中安装MongoDB PHP扩展驱动
你可以使用'autoconf'安装MongoDB PHP扩展驱动。
你可以使用'Xcode'安装MongoDB PHP扩展驱动。
如果使用 XAMPP,可以使用以下命令安装MongoDB PHP扩展驱动:
sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongo
如果以上命令在XMPP或者MAMP中不起作用,需要在Github上下载兼容的预编译包。
然后添加 'extension=mongo.so'配置到php.ini文件中。
⑵ php7 mongodb 扩展 真的很差吗
MongoDB\Driver\Manager::executeBulkWrite
这玩意还配置了一个巨大的类库来配合调用:就是这个:https://github.com/mongodb/mongo-php-library ,纯粹是脱裤子放P,多此一举,本来原生扩展就已经巨长、巨难用,还配一个根本没有简化任何代码的库有什么意义?甚至于调用这个类库比原生的名字更长、更啰嗦,而且多了一层封装就多一次bug机会。
这个库文件总共63个,看看,如果你随便写个脚本访问一下mongodb,还得包含63个文件,我TM整个项目都没有63个文件好不好?这些个写惯了java的没事就老老实实写java,都跑来写php,php是要解析执行的,又不像jvm那么编译优化执行,搞那么多文件,不影响执行速度吗?真是狗屎,所以完全不推荐用这个狗屎库。
但是这个扩展最奇怪的就是文档超级简陋,根本不能获得任何有价值的信息,所以只能靠摸索来了。
下面是我用到的由MongoClient迁移到MongoDB\Driver的差异点。
MongoClient插入或更新是同样的代码:
(new MongoClient())->{$db}->{$collection}->save($arr);
// 这个$arr数组可以直接含有 "_id" 索引来指定 mongodb文档的_id值,就这么简单粗暴,这才是php啊!
MongoDB\Driver,插入和更新需要区分:
$mongo = new MongoDB\Driver\Manager();
$bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
$data = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query([]), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED))->toArray();
if (empty($data[0])) { // 确定不存在,插入
$bulk->insert($arr);
} else { // 否者更新
$bulk->update([], array('$set' => $arr)); // $arr同样是刚才的数组
}
// 还没完,还要执行下一步:db.collection要替换成实际的数据库、集合名
$result = $mongo->executeBulkWrite('db.collection', $bulk, new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000));
// 返回插入或更新是否成功:
$ok = $result->getInsertedCount() || $result->getModifiedCount() ? 1 : 0;
// 真是够了!
查询一条记录:
MongoClient:
(new MongoClient())->{$db}->{$collection}->findOne(['_id' => $id]);
MongoDB\Driver:
$mongo = new MongoDB\Driver\Manager();
$result = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query(['_id'=>$id], []), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));
// 返回的$result是一个对象,需要手动转换成数组。
查询数量时候,需要注意:
$mongo = new MongoDB\Driver\Manager();
$cursor = $mongo-executeCommand($db, new MongoDB\Driver\Command($arr), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));
// 这里$cursor是一个游标。需要注意$arr里的字段:
$arr = ['count'=>$collection, 'query'=>$query]; // 这里count必须排在前面,位置反了直接报异常。
查询结果集:
$mongo = new MongoDB\Driver\Manager();
$cursor = $mongo->executeQuery('db.collection', new MongoDB\Driver\Query($arr, $opts), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));
//注意,这里的 $arr和 $opts;
$arr = ['_id'=> ['$in'=> $ids] ]; // 根据id数组获取集合
$opts = ['limit'=> $limit, 'skip'=> $skip ]; // 不推荐
// 这里在传递$limit和$skip的时候,最好先转成整数,不然不生效:
$opts = ['limit'=> (int) $limit, 'skip'=> (int) $skip ]; // 推荐写法。
// 写到这里,让人怀疑是不是在用php了,怎么还需要这样的类型转换。字符串整数都不行!
基本就这样,推荐自己封装一个简单的MongoDB\Driver,而不是使用那个巨大无比的库、也不推荐直接用原生
⑶ 如何为PHP安装mongodb的扩展
1.首先下载php的mongodb扩展
从http://pecl.php.net/package/mongo这个网址下载mongodb的扩展源码包
1
wget http://pecl.php.net/get/mongo-1.4.5.tgz
2.解压安装包
1
tar zxf mongo-1.4.5.tgz
3.进入解压目录,运行phpize进行安装准备
1
2
cd mongo-1.4.5
/usr/local/php/bin/phpize
4.安装编译
上述命令运行完后,在目录下就生成了configure文件
使用./configure命令进行安装配置,然后使用make && make install进行编译安装,命令如下:
1
2
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
5.编辑php.ini增加下述一行添加mongodb扩展
1
extension=mongo.so
重启web容器,然后查看phpinfo,看到mongodb的内容就说明安装成功。
⑷ linux下我mongodb存储快要满了,怎么扩充存储大小,且不删除原来的数据
如果是你的硬盘满了,你可以再用别的硬盘跟这个硬盘构成RAID。
如果是你的一个BSON doc快满了,那么说明你的存储的数据结构是有问题的,如果可能的话,应该重新设计以使BSON doc不超过限制;如果不能的话,那么你可以修改
源文件“mongo/src/mongo/bson/util/builder.h”里面的
constintBSONObjMaxUserSize=16*1024*1024;
到你需要的大小,然后重新编译mongodb。但不要改的太大,因为每一个BSON Object都是要全部读进内存里的。
⑸ 如何在Linux下快速安装MongoDB
方法/步骤想在shell中连接数据库,首先要在连接数据的机器上安装mongodb的客户端才可以。客户端的安装在这里不再重复,自己网络或者google一下吧。连接mongodb的命令如下:/home/test/mongodb/mongodb-2.2.3/bin/mongo127.0.0.1:8888这个是我的数据库配置,没有设置用户名密码。所以直接通过该命令就可以连接。连结后会有一个默认连接的数据库。mongodb常用命令:查看数据库命令:showdbs;查看集合命令:showcollections;切换数据库:usedatabaseName;查询数据:db.集合名.find()插入数据:db.集合名.insert({name:'test',age:1});删除:db.test.remove();如果我想通过shell脚本实现一个日志分析并入库的操作怎么呢?简单,如下操作就可以:sql="db.test.insert({name:'test',age:1});"//定义执行的sqlecho"$sql"|/home/test/mongodb/mongodb-2.2.3/bin/mongo127.0.0.1:8888/test--shell注意,echo命令中的格式必须这样写,管线命令后面的是是数据库安装地址然后是ip:端口号,斜线后是数据库名称,--shell表示通过shell交互
⑹ linux下phpstudy怎么安装php环境变量
linux下phpstudy环境的安装
phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6
phpStudy for Linux 支持Apache/Nginx/Tengine/Lighttpd,
支持php5.2/5.3/5.4/5.5切换
已经在centos-6.5,debian-7.4.,ubuntu-13.10测试成功。
下载版:http//lamp.phpstudy.net/phpstudy.bin
完整版:http//lamp.phpstudy.net/phpstudy-all.bin
安装:
wget -c http//lamp.phpstudy.net/phpstudy.bin
chmod +x phpstudy.bin #权限设置
./phpstudy.bin #运行安装
用时十到几十分钟不等,安装时间取决于电脑的下载速度和配置。
也可以事先下载好完整,安装时无需下载。
安装完成
如何切换php版:
假如你先安装的apache+php5.3
想切换成nginx+php5.4
你就再走一次./phpstudy.bin
但是你会发现有一行是否安装mysql提示选不安装
这样只需要编译nginx+php5.4
从而节省时间,这样只需要几分钟即可。
项目地址:http://lamp.phpstudy.net/
使用说明:
服务进程管理:phpstudy (start|stop|restart|uninstall)
站点主机管理:phpstudy (add|del|list)
ftpd用户管理:phpstudy ftp (add|del|list)
=phpstudy WIN版下载==================
‘软件简介’
该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有35M,有专门的控制面板。总之学习PHP只需一个包。
对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。
1、全面适合 Win2000/XP/2003/win7/win8/win2008 操作系统 ,支持Apache、IIS、Nginx和LightTPD。
2、该程序包集成以下软件,括号内为phpstudy下对应的目录。
php 5.6a3 (php56n)
php 5.5.10 (php55)
php 5.5.10-nts (php55n)
php 5.4.26 (php54)
php 5.4.26-nts (php54n)
php 5.3.28 (php53)
php 5.3.28-nts (php53n)
php 5.2.17 (php52)
Apache 2.4.7 (Apache)
Nginx 1.5.11 (nginx)
LightTPD 1.4.32 (Lighttpd)
MySQL 5.5.36 (MySQL)
MySQL-Front 5.3 (SQL-Front)
phpMyAdmin 3.5.8.2 (phpMyAdmin)
pear 1.9.4 (pear)
OpenSSL 1.0.1e&0.9.8y
ZendOptimizer 3.3.3 (php5.2有)
Zend Loader 5.5.0 (php5.3有)
Zend Loader 6.0.0 (php5.4有)
wincache 1.3.5 (fastcgi有)
php_opcache 7.0.3 (ZendOpcache扩展)
xdebug 2.2.3.1
Zend Debugger 6.2 (php5.3/4 fastcgi有)
xcache 3.1.0
eAccelerator 1.0&0.9.6
php_sqlsrv (MSSQL扩展)
php_pdo_sqlsrv (PDO-MSSQL扩展)
php_mongo 1.4.5 (MongoDB扩展)
php_dbase 5.1.0 (dbase扩展)
php_dbx 1.1.2 (dbx扩展)
php_ibm_db2 1.9.5 (ibm_db2扩展)
php_apc 3.1.13 (php_apc扩展)
php_memcache 3.0.8
phpStudy Ftp server (FTPServ)
SendMail 3.2 (sendmail)
VC++ 2008 运行库
3、MySQL数据库默认用户名:root,密码root,安装后请重新设置密码。
4、本程序纯绿色,支持22种组合一键切换,支持系统服务和非服务两种启动方式,自由切换。改变安装路径或拷贝到别的电脑上也可正常运行;即便是运行完再更改路径也能运行,真正做到无须配置。重写控制面板更加有效直观地进行控制程序的启停。
5、自带FTP服务器,支持多用户,无需再安装FTP服务器。自带网站挂马监视器,随时记录文件的修改情况,让挂马文件无处可逃。
6、本程序完美支持II7,IIS8和IIS6。应网友的要求制作Nginx版和Lighttpd版。Nginx版为phpfind,Lighttpd版为phpLight。
推荐:学习JSP用JspStudy。
‘软件简介’
JspStudy集成JDK+tomcat+Apache+mysql,JSP环境配置一键启动。无需修改任何配置即可迅速搭建支持JSP的服务器运行环境。
纯绿色解压即可,支持系统服务和非服务两种启动方式,自由切换。控制面板更加有效直观地进行控制程序的启停。
JspStudy将复杂的JSP环境配置简单化。
‘特别注意’
1. 为了减少出错安装路径不得有汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。
2. 此为apache+php方案,需要Nginx+php方案的请到www.phpStudy.net下载phpfind,Lighttpd+PHP方案下载phpLight。
3. 重装系统后或相关服务丢失时,只需要点一下‘运行模式-应用’即可。
4. 可通过菜单‘卸载相关服务’进行卸载相关服务。
5. 在‘启动’、‘停止’、‘重启’三个启停按钮上右键可以有选择地进行启停,左键将控制全部的启停。
6. 菜单‘phpStudy 设置’可以进行php,apche,mysql的相关设置。菜单‘站点域名设置’可以进行站点及域名的添加。
7. 本程序分为安装版和非安装版,无论是安装还是免安装,最后的效果完全一致。
8. 端口问题无法启动时,请使用菜单‘环境端口检测’进行端口检测,尝试启动。
26种组合一键切换apache+php
php扩展管理超级方便
nginx+php
IIS7/8/6+php
mysql备份还原导入导出
站点域名设置
端口检测
博客不再更新,请到官方网站下载:http://www.phpstudy.net/
下载地址解压版:http://www.phpstudy.net/phpstudy/phpStudy.zip
下载地址安装版:http://www.phpstudy.net/phpstudy/phpStudy-install.zip
其他版本:
软件简单说明各版本的区别大小下载
phpStudy26种组合,超全大合集Apache+Nginx+LightTPD+IIS
php5.2 php5.3 php5.4 php5.5 php5.6
MySQL phpMyAdmin MySQL-Front
26种组合自由切换,是下面5个版本的合集
同时支持apache/nginx/Lighttpd和IIS7/8/636M解压版
安装版
phpStudy
Lite
新手用,经典wamp组合Apache+php5.3+php5.4+MySQL (wamp集成包)
没有上面合集复杂的多版本设置,简单适合新手。16M解压版
phpStudy
for IIS
IIS服务器专用IIS+php5.2+php5.3+php 5.4+MySQL
php一键安装包 for IIS7/8/6 (IIS服务器专用)21M解压版
phpStudy
for Linux
Linux服务器专用(lamp)Apache+Nginx+LightTPD+MySQL
php5.2+php5.3+php5.4+php5.5一键安装包
支持centos,ubuntu,debian等Linux系统,12种组合80M安装版
phpfindnginx+php组合(wnmp)Nginx+php5.3+php5.4+MySQL (wnmp集成包)
nginx+php组合,适合喜欢用nginx的朋友16M解压版
phpLightlighttpd+php组合(wlmp)Lighttpd+php5.3+php5.5+MySQL (wlmp集成包)17M解压版
phpStudy
(php5.2)
apache+php5.2珍藏版Apache2.2+php5.2.17+MySQL5.1
php5.2经典组合值得收藏,仅有11M,无需运行库11M解压版
JspStudyJSP环境一键安装包JDK+tomcat+Apache+mysql+php
纯绿色解压即可,不添加环境变量,不修改注册表52M解压版
下载地址:
php5.3+php5.4合集下载: http//www.phpstudy.net/phpstudy/phpStudy.zip
