日期:2014-05-16  浏览次数:20614 次

berkeley db和db4的安装

bdb安装程序:

1、安装Berkeley DB

# cd /usr/local/src
# wget
http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz
# tar -zxvf db-4.6.21.tar.gz
# cd db-4.6.21
# cd build_unix

Berkeley DB默认是安装在/usr/local/BerkeleyDB.4.6目录下,其中4.6就是版本号,你也可以指定–prefix参数来设置安装目录

# ../dist/configure --prefix=/usr/local/berkeleydb --enable-cxx

其中–enable-cxx就是编译C++库,这样才能编译Berkeley DB数据库的PHP扩展php_db4

# make
# make install
# echo '/usr/local/berkeleydb/lib/' >> /etc/ld.so.conf
# ldconfig

这2句的作用就是通知系统Berkeley DB的动态链接库在/usr/local/berkeleydb/lib/目录。
如果没有系统提示ldconfig命令,则用whereis ldconfig找一下在哪,一般可用 # /sbin/ldconfig
至此,Berkeley DB数据库已经安装完成。

2、安装Berkeley DB的PHP扩展


虽然PHP里已经自带了php_db和php_dba两个扩展都支持Berkekey DB,但是毕竟支持的有限,所以还是编译Berkeley DB自带的php_db4扩展好。

# cd /usr/local/src/db-4.6.18/php_db4/
# phpize(/usr/local/php/bin/phpize)
# ./configure --with-db4=/usr/local/berkeleydb/ --with-php-config=/usr/local/php/bin/php-config
# make
# make install

说明:这里configure的时候可能会提示你找不到php-config,你可以找到你的php安装PATH,然后增加--with-php-config=PATH
至此db4已编译好在/usr/lib64/php/modules/db4.so目录(具体跟你的系统有关)

echo 'extension=db4.so' > /etc/php.d/db4.ini

重起WEB服务器(Apache等)
至此php_db4扩展的安装也完成了,执行php -m即可看到db4扩展已经加载了。


3、测试php_db4扩展php_db4提供了下面4个类:


class Db4Env {
??? function Db4Env($flags = 0) {}
??? function close($flags = 0) {}
??? function dbremove($txn, $filename, $database = null, $flags = 0) {}
??? function dbrename($txn, $file, $database, $new_database, $flags = 0) {}
??? function open($home, $flags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN, $mode = 0666) {}
??? function remove($home, $flags = 0) {}
??? function set_data_dir($directory) {}
??? function txn_begin($parent_txn = null, $flags = 0) {}
??? function txn_checkpoint($kbytes, $minutes, $flags = 0) {}
}

class Db4 {
??? function Db4($dbenv = null) {} // create a new Db4 object using the optional DbEnv
??? function open($txn = null, $file = null, $database = null, $flags = DB_CREATE, $mode = 0) {}
??? function close() {}
??? function del($key, $txn = null) {}
??? function get($key, $txn = null, $flags = 0) {}
??? function pget($key, &$pkey, $txn = null, $flags = 0) {}
??? function get_type() {} // returns the stringified database type name
??? function stat($txn = null, $flags = 0) {} // returns statistics as an as
??? function join($cursor_list, $flags = 0) {}
??? function sync() {}
??? function truncate($txn = null, $flags = 0) {}
??? function cursor($txn = null, flags = 0) {}
}

class Db4Txn {
??? function abort() {}
??? function commit() {}
??? function discard() {
??? function id() {}
??? function set_timeout($timeout, $flags = 0) {}
}

class Db4Cursor {
??? function close() {}
??? function count() {}
??? function del() {}
??? function dup($flags = 0) {}
??? function get($key, $flags = 0) {}
??? function pget($key, &$primary_key, $flags = 0) {}
??? function put($key, $data, $flags = 0) {}
}
从字面上也不难理解,Db4Env设置数据库环境、Db4操作数据库、Db4Txn用于事务处理、Db4Cursor用于光标处理。具体使用可参考
http://www.oracle.com/technology/documentation/berkeley-db/db/ref/ext/php.html
/usr/local/src/db-4.6.18/php_db4/samples目录下提供了2个简单的例子simple_counter.php和t