`

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和transactional_counter.php。

simple_counter.php

<?php
// Create a new Db4 Instance
$db = new Db4();

// Open it outside a Db4Env environment with datafile/var/lib/db4
// and database name "test"
$db->open(null, "/var/tmp/db4", "test");

// Get the current value of "counter"
$counter = $db->get("counter");
print "Counter Value is $counter\n";

// Increment $counter and put() it.
$db->put("counter", $counter+1);
// Sync to be certain, since we're leaving the handle open
$db->sync();
?>

transactional_counter.php

<?php
// Open a new Db4Env
$dbenv = new Db4Env();
$dbenv->set_data_dir("/var/tmp/dbhome");
$dbenv->open("/var/tmp/dbhome");

// Open a database in $dbenv. Note that even though
// we pass null in as the transaction, db4 forces this
// operation to be transactionally protected, so PHP
// will force auto-commit internally.
$db = new Db4($dbenv);
$db->open(null, 'a', 'foo');

$counter = $db->get("counter");
// Create a new transaction
$txn = $dbenv->txn_begin();
if($txn == false) {
print "txn_begin failed";
exit;
}
print "Current value of counter is $counter\n";

// Increment and reset counter, protect it with $txn
$db->put("counter", $counter+1, $txn);

// Commit the transaction, otherwise the above put() will rollback.
$txn->commit();
// Sync for good measure
$db->sync();
// This isn't a real close, use _close() for that.
$db->close();
?>

分享到:
评论

相关推荐

    db4-4.7.25-17.el6.i686.rpm

    标题“db4-4.7.25-17.el6.i686.rpm”指出的是一个特定版本的Berkeley DB(简称db4)软件包,适用于32位的...通过正确安装和配置db4 RPM包,可以解决这个问题,使32位Linux系统能够正常运行需要Berkeley DB支持的软件。

    db4-4.7.25-17.el6.x86_64.rpm

    1. **查找并安装旧版本的libdb**:可以使用`yum`或`dnf`(取决于你的Linux发行版)来查找和安装libdb的旧版本。例如,运行`yum search libdb.so.3`或`dnf search libdb.so.3`来查看可用的版本,然后根据结果进行安装...

    Vsftpd+DB4

    而**Db4**(Berkeley DB 4)则是一种高性能嵌入式数据库系统,能够高效地存储和检索数据。结合两者,可以创建一个无需依赖系统用户账户即可运行的FTP服务,所有FTP用户的认证信息均保存在Db4数据库中,这大大增强了...

    redhat安装db_load

    在Red Hat Linux操作系统中,`db_load`是一个用于导入Berkeley DB数据库文件的工具,它通常与`db4`库一起使用。Berkeley DB是一种轻量级、高性能、嵌入式数据库系统,广泛应用于各种软件项目,包括系统配置、日志...

    Linux下OpenLDAP的安装软件

    在Linux环境下配置OpenLDAP,需要安装一系列依赖软件,包括BerkeleyDB和cyrus-sasl。接下来,我们将深入探讨这些组件以及OpenLDAP的安装过程。 首先,BerkeleyDB是一个高性能、嵌入式数据库系统,由Oracle公司开发...

    linuxCentOSFTP虚拟用户设置全解.pdf

    DB4(Berkeley DB)是一种嵌入式数据库管理系统,它支持文件数据库。在这里,我们需要安装 DB4 部件包,以便支持文件数据库: ``` [root@KcentOS5 ~]# yum install db4* ``` 这将安装 DB4 部件包,包括 DB4 开发包、...

    centos ftp虚拟用户设置全解

    DB4 是一个基于 Berkeley DB 的文件数据库,能够提供快速的数据存储和检索功能。为了支持虚拟用户环境,需要安装 DB4 部件包。 [root@KcentOS5 ~]# yum install db4* 在安装 DB4 部件包时,需要安装相关的依赖项。...

    Linux企业级FTP服务器的架设及管理.pdf

    4. DB4:在VSFTPD的虚拟用户机制中,DB4(Berkeley DB 4)数据库用于存储独立的用户名/密码信息,与系统账号分离。这种方式可以更好地管理和控制FTP用户的权限,每个员工可以根据其级别获得不同的访问权限,确保资料...

    CentOS5中vsftp虚拟用户配置

    在开始配置vsftp虚拟用户之前,需要安装db4-utils软件包,该软件包的作用是提供了一个Berkeley DB数据库引擎,用于存储vsftp虚拟用户的用户名和密码信息。 2. 创建logins_list文件 创建一个名为logins_list的文件...

    tuxedo8.1 安装需要的文件

    Tuxedo 8.1 版本可能需要用户手动编译和安装,因此源码是必不可少的。在获取源码后,通常需要进行以下步骤: 1. 解压源码包:使用 `tar` 或 `unzip` 命令解压缩下载的文件。 2. 配置环境:设置必要的环境变量,如 `...

    MongoDB 教程.docx

    - **Key-Value 存储**:如 Tokyo Cabinet/Tyrant、Berkeley DB 和 MemcachedB,快速查找 key 对应的 value。 - **图存储**:如 Neo4J 和 FlockDB,专门用于存储和处理图形关系。 - **对象存储**:如 db4o 和 Versant...

    关系数据库还是NoSQL数据库.doc

    3. 键值存储:如Tokyo Cabinet/Tyrant、Berkeley DB、MemcacheDB和Redis,这类数据库以键值对形式存储数据,查询速度快,适用于缓存和快速访问场景。 4. 图存储:如Neo4J、FlockDB,专门用于存储和查询复杂的图形...

    php-dba-cache:使用数据库(dbm样式)抽象层创建缓存以缓存对象,字符串,整数或数组

    具有持久连接的Oracle Berkeley DB 4示例 $ cache = new Cache ( '/your/path/to/the/cahe-file/cache.db4' , 'db4' ); $ yorObject = new ObjectYouWantToPutInCache (); $ yourObjectIdentifier = 'your:cool:...

    CentOS6.3安装配置vsftp

    3. **加载用户数据库**:使用 `db_load` 工具将文本文件转换为 Berkeley DB 格式。 ```bash yum -y install db4 db4-utils db_load -T -t hash -f /etc/vsftpd/user_passwd /etc/vsftpd/user_passwd.db chmod ...

    Linux 下FTP的安装与配置教程详解

    为了实现虚拟用户的认证,需要安装 `Berkeley DB` 工具,即 `db4` 和 `db4-utils`。然后创建一个包含用户名和密码的文本文件,例如 `/etc/vsftpd/vuser_passwd.txt`,每个用户名和对应的密码应位于不同行,且用户名...

    linux vsftpd搭建步骤 亲测可用

    - **安装Berkeley DB工具:** ```bash yum install db4 db4-utils ``` - **创建用户密码文本:** ```bash cat /etc/vsftpd/vuser_passwd.txt lixiang 8qu.com.cn shuaicong 8qu.com.cn gaojingyuan 8qu....

    mongodb学习总结.docx

    - **Key-Value 存储**:Tokyo Cabinet/Tyrant、Berkeley DB、MemcacheDB 和 Redis,适用于快速的键值查找。 - **图存储**:Neo4J 和 FlockDB 专门用于存储和处理图形关系。 - **对象存储**:如 db4o,直接使用...

    Redis操作基础文档

    1. **键值存储**:如Tokyo Cabinet/Tyrant、Berkeley DB、MemcacheDB、Redis等,特点是使用键值对形式存储数据,访问速度快,但缺乏复杂查询功能。 2. **文档数据库**:如MongoDB、CouchDB等,使用JSON或类似格式...

    vsftpd 服务配置

    # 安装 Berkeley DB 数据库,用于虚拟用户的管理 yum -y install db4* ``` 安装完成后,确保 vsftpd 服务已经安装成功。 ```bash # 检查 vsftpd 服务状态 service vsftpd status ``` #### 四、创建专用账户 为了...

Global site tag (gtag.js) - Google Analytics