標籤:style blog http io ar color os 使用 sp
FROM:http://www.cstor.cn/textdetail_7995.html
之前筆者出了一篇文章是教大家在 Linux 下安裝 MongoDB,並且透過 Mongo Client 操作資料庫 (Console Interface),但實際應用上最常搭配 Web 或 WebService 進行實作。接下來我們要介紹如何在 PHP 中操作 MongoDB。這裡一樣介紹 CentOS 的安裝方式,首先透過 EPEL 安裝 PHP Mongo Driver,請執行以下命令安裝:
sudo yum install php-pecl-mongo
啟動 Mongo DB Server:
sudo service mongod start
寫一支 PHP 透過 MongoClient 類別來存取資料庫 (官方教學檔案使用的 Mongo 類別已經廢止),程式碼如下:
// Configuration $dbhost = ‘localhost‘; $dbname = ‘my_mongodb‘; // Connect to mongo database $mongoClient = new \MongoClient(‘mongodb://’ . $dbhost); $db = $mongoClient->$dbname; // Get the users collection $cUsers = $db->users; // Insert object $user = array( ‘first_name’ => ‘SJ’, ‘last_name’ => ‘Mongo’, ‘roles’ => array(‘developer’,’bugmaker’) ); // Insert this new document into the users collection $cUsers->save($user); // Query $user = array( ‘first_name’ => ‘SJ’, ‘last_name’ => ‘Mongo’ ); $user = $cUsers->findOne($user); // output print_r($user);
View Code
執行結果如下:
1 Array 2 3 ( 4 5 [_id] => MongoId Object 6 7 ( 8 9 [$id] => 53de543d58b420881b998c8b 10 11 ) 12 13 [first_name] => SJ 14 15 [last_name] => Mongo 16 17 [roles] => Array 18 19 ( 20 21 [0] => developer 22 23 [1] => bugmaker 24 25 ) 26 27 )
View Code
上述的動作會直接操作 my_mongodb 資料庫,建立一個名為 users 的 Collection 並且新增一個物件,整個過程不需要事先建立資料庫與 Schema,是不是很簡單快速呢!?執行完成後我們也可以在 /var/lib/mongodb/ 目錄中看見 my_mongodb.0~1 等檔案,表示我們的資料已經建立。
可是過程我們發現一件事情,整個 MongoDB 連線動作竟然沒有驗證!沒錯,預設 MongoDB 啟用確實是無敵狀態,接下來我們介紹如何啟用帳密連線驗證。
開啟你的 MongoDB 連線驗證
第一步先透過 mongo 命令,在 admin 資料庫中建立欲連線的帳號密碼 = mongo
MongoDB 管理者需在 admin 資料庫中建立使用者,因此我們執行以下 Query:
use admin;
db.addUser(‘sj’, ‘my-password’);
exit;
第二步修改 /etc/mongodb.conf 設定檔,開啟「auth = true」啟用驗證程式
sudo vim /etc/mongodb.conf
重新啟用 MongoDB 服務
sudo service mongod restart
接著我們就可以透過 mongo 命令設定 my_mongodb 的連線使用者,如下:
use admin;
db.auth(‘sj’, ‘my-password’);
use my_mongodb;
db.addUser(‘sj’, ‘my-password’);
exit;
上述我們透過 db.auth 進行登入,由於已經啟用認證,必須登入後才可以操作資料庫。
接著我們將 PHP 修改為以下,加入 MongoDB 連線的帳號與密碼:
1 // Configuration 2 3 $dbhost = ‘localhost‘; 4 5 $dbname = ‘my_mongodb‘; 6 7 // Connect to mongo database 8 9 $mongoClient = new \MongoClient( 10 11 ‘mongodb://’ . $dbhost, 12 13 array( 14 15 ‘db’ => $dbname, 16 17 ‘username’ => ‘sj’, 18 19 ‘password’ => ‘my-password’ 20 21 ) 22 23 ); 24 25 $db = $mongoClient->$dbname; 26 27 // Get the users collection 28 29 $cUsers = $db->users; 30 31 // Query 32 33 $user = array( 34 35 ‘first_name’ => ‘SJ’, 36 37 ‘last_name’ => ‘Mongo’ 38 39 ); 40 41 $user = $cUsers->findOne($user); 42 43 // output 44 45 print_r($user);
View Code
如此就可以透過帳密與 MongoDB 正確進行連線羅,介紹到此,下次再見。
當 PHP 遇上 MongoDB