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
