CouchDBをphpから操作する方法。
前回の記事でCouchDBをインストールしましたので、CouchDBをphpから操作してみました。
CentOS5.4にCouchDBをインストールする方法! - @camelmasaの開発日記
testデータベース&testフィールドの作成
管理画面(_utils)の左上に表示されている"Create Database"リンクを押してデータベースを作成する事が出来ます。
画面の指示に従ってフィールド名も入力すると下記の画面が表示されました。
これでtestデータベース&testフィールドが作成出来ました。簡単ですね。
PECLパッケージphp_couchdbのインストール
phpから操作する為にcouchdb.soという野良PECLパッケージがあったので使用してみました。
Topdog.za.net :: PHP CouchDB Extension
…しかし下記のエラーが表示されてしまい、PHPでエラーになってしまいます。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/couchdb.so' - /usr/lib/php/modules/couchdb.so: undefined symbol: php_json_encode in Unknown on line 0
vim /usr/include/php/ext/json/php_json.h
* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Omar Kilani <omar@php.net> | +----------------------------------------------------------------------+ */ /* $Id: php_json.h 283185 2009-06-30 17:52:21Z stas $ */ #ifndef PHP_JSON_H #define PHP_JSON_H #define PHP_JSON_VERSION "1.2.1" #include "ext/standard/php_smart_str.h" extern zend_module_entry json_module_entry; #define phpext_json_ptr &json_module_entry #if defined(PHP_WIN32) && defined(JSON_EXPORTS) #define PHP_JSON_API __declspec(dllexport) #else #define PHP_JSON_API PHPAPI #endif #ifdef ZTS #include "TSRM.h" #endif ZEND_BEGIN_MODULE_GLOBALS(json) int error_code; ZEND_END_MODULE_GLOBALS(json) #ifdef ZTS # define JSON_G(v) TSRMG(json_globals_id, zend_json_globals *, v) #else # define JSON_G(v) (json_globals.v) #endif PHP_JSON_API void php_json_encode(smart_str *buf, zval *val, int options TSRMLS_DC); PHP_JSON_API void php_json_decode(zval *return_value, char *str, int str_len, zend_bool assoc, long depth TSRMLS_DC); #endif /* PHP_JSON_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */
…うーん。エラーの原因がわからない。
alpha版なので、もっと作りこんでほしいなあと思う。
MongoDBの場合はPECL::MONGOがあってPHPer歓喜なんだけども。
別の方法でCouchDBにアクセスしてみる事にします。
PEARパッケージHTTP_Requestのインストール
CouchDBはHTTPリクエストでデータが取得出来るので、PEARパッケージHTTP_Requestをインストールして実行する事にしました。
pear install HTTP_Request
<?php require_once "HTTP/Request.php"; $http = new HTTP_Request('http://192.168.80.139:5984/test/93e4b62c166489b5ff94600e3003db88'); $response = $http->sendRequest(); var_dump($http->getResponseBody());
上記のphpの実行結果です。
php couchdb.php string(101) "{"_id":"93e4b62c166489b5ff94600e3003db88","_rev":"2-f62fade7a96a75f5bb109036ad107af0","test":"test"} "
[PR]Spreeの情報を集めています。
ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/