2011年9月17日土曜日

mongodbとphpの連携

・PHPとmongodbを連携させる
$PHP_HOME/bin/pecl install mongo

そうすると、下記のエラーが発生した・・・
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

ERROR: `phpize' failed

とりあえずググッて見たら下記をやれば解決する可能性があるのでやってみる。
yum install autoconf
(autoconfのインストール)


・php.iniに下記を追加
extension=mongo.so
※php.iniの場所がわからなければ、phpinfo()を表示させて確認する。

・インストールされているかの確認
$PHP_HOME/bin/php -m |grep mongo

・PHPからデータを格納してみる
  1. <?php  
  2. $m = new Mongo();  
  3. $db = $m->comedy;  
  4. $collection = $db->cartoons;  
  5.   
  6. $obj = array"title" => "Calvin and Hobbes"" author" => "Bill");  
  7. $collection->insert($obj);  
  8.   
  9. $obj = array"title" => "XKCD""online" => true);  
  10. $collection->insert($obj);  
  11. $cursor = $collection->find();  
  12.   
  13. foreach($cursor as $obj) {  
  14.  echo $obj["title"]."\n";  
  15. }  
  16. ?>  
  17. 格納したものが表示されればOK!  

mongodbのインストール

どうしても、複数ポイント(緯度経度)で囲った範囲のデータを抽出したかったので、mongodbをインストールすることにしました!
※1.9以上のバージョンじゃないと複数地点検索(Geo Polygon Query)はできない。

■mongodbのインストール
・ソースの取得及び展開
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.0.tgz
tar zxvf mongodb-linux-i686-2.0.0.tgz

・データファイルの保存ディレクトリ作成
mkdir -p /var/mongodb/data
ディレクトリのパーミッションに気をつけて!

・DBの起動
$MONGODB_HOME/bin/mongod --dbpath=/var/mongodb/data/ &

・DBへ
$MONGODB_HOME/bin/mongo

・動作確認
> db.foo.insert( {a:1} )
> db.foo.find()
上記で値が出力されればOK!