php操作dba的总结笔记
来源:互联网 发布:淘宝怎么找收藏的店铺 编辑:程序博客网 时间:2024/05/17 07:22
1.简介Database (dbm-style) Abstraction Layer
这些函数是建立在访问 Berkeley DB (伯克利数据库)的基础之上。
目前 PHP 支持的 DBA 数据库包括:
- dbm:柏克莱发展的最早期 DBA 数据库。
- ndbm:较新且较有弹性的 DBA。
- gdbm:GNU 发展的 DBA,ftp://ftp.gnu.org/pub/gnu/gdbm/
- db2:由 Sleepycat 软件开发的 DB2 (非 IBM 的 DB2),http://www.sleepycat.com
- db3:由 Sleepycat 软件开发的 DB3。
- db4:由 Sleepycat 软件开发的 DB4,从php4.3.2开始支持。
- cdb:这是 qmail 作者开发快速可靠的 DBA,http://cr.yp.to/cdb.html.
- cdb_make
- flatfile
- inifile
- qdbm
2.相关的函数
- dba_close —关闭dba数据库
- dba_delete —删除数据库中指定的key
- dba_exists — 检查key是否存在
- dba_fetch— 取得指定key的值
- dba_firstkey — 获取第一个key
- dba_handlers —列出所有可用的handler
- dba_insert— 插入一条记录
- dba_key_split— Splits a key in string representation into array representation
- dba_list — 列出所有打开的数据库
- dba_nextkey — 获取下一个key
- dba_open —打开数据库
- dba_optimize — 优化数据库
- dba_popen — 使用长链接打开数据库
- dba_replace —替换或者插入一条记录
- dba_sync — 数据库同步
3.函数说明和范例
3.1 dba_open()
3.1.1 说明:
resource dba_open ( string $path , string $mode [, string $handler [, mixed $... ]] 链接数据库
3.1.2 参数
string $path :打开数据库所在的目录。
string $mode : 打开的模式。第一个字符位置,'r’:读的方式; 'w’:写的方式; 'c’:读写方式,如果数据库不存在,则创建; 'n’:创建,以读写方式; 第二个字符位置,'l’:以锁定的方式,并生成一个.lck的文件; 'd’:锁定数据库自己。第三个字符位置:'t’:测试访问锁而且不想等待的时候,用此选项。
注意:对一个数据库文件,只能有一个人可以写操作。当dba数据库用在web服务或者多个需要写操作的时候,只能是一个接着一个,不能同时写,而且在写的时候,读也是不允许的。dba的扩展用锁来防止同时操作,请看下表:
- ok: the second call will be successfull. 第二次调用将会成功
- wait: the second call waits until dba_close() is called for the first. 第二次调用会等待,直到调用dba_close() 时候
- false: the second call returns false. 第二次调用会返回false
- illegal: you must not mix "l" and "d" modifiers for mode parameter. 'l' 和 'd'禁止混合使用在模式参数中
string $handler:使用的数据库
3.1.3 返回值
成功返回handler, 失败返回 false
3.1.4 示例
//打开数据库test.db,使用的handler是db4
$dbh = dba_open( "./test.db", "c", "db4" );
if (!$dbh) {
echo "Open db4 false./n";
exit;
}
3.2 dba_insert()
3.2.1 说明
3.2.2 参数
string $key key值,假如key存在的话,函数返回false
string $value 想要插入的值
resource $handle 数据库的handler, 通过dba_open() , dba_popen() 返回
3.2.3 返回值
如果成功则返回 TRUE,失败则返回 FALSE
3.2.4 示例
$dbh = dba_open( "./data/products", "c", "db4" )
or die( "Couldn't open database" );
dba_insert( "Sonic Screwdriver", "23.20", $dbh);
dba_insert( "Tricorder", "55.50", $dbh);
dba_insert( "ORAC AI", "2200.50", $dbh);
dba_insert( "HAL 2000", "4500.50", $dbh); dba_close( $dbh );
3.3 dba_fetch()
3.3.1 说明
string dba_fetch ( string $key , resource $handle ) 通过指定的key获取数据
3.3.2 参数
string $key key值
resource $handle 数据库的handler,通过dba_open(), dba_popen() 返回
3.3.3 返回值
如果key对应的value值存在,返回data字符串,否则返回FALSE
3.3.4 示例
$dbh = dba_open( "./data/products", "c", "db4" )
or die( "Couldn't open database" );
$tricorder = dba_fetch('Tricorder', $dbh);
dba_close($dbh);
3.4 dba_delete()
3.4.1 说明
bool dba_delete ( string $key , resource $handle ) 通过指定的key删除数据库记录
3.4.2 参数
string $key key值, 如果key不存在,返回false
resource $handle 数据库的handler, 通过调用 dba_open(), dba_popen() 返回
3.4.3 返回值
如果成功则返回 TRUE,失败则返回 FALSE。
3.4.4 示例
$dbh = dba_open( "./data/products", "c", "db4" )
or die( "Couldn't open database" );
$res_del = dba_delete('Tricorder', $dbh);
dba_close();
3.5 dba_exists()
3.5.1 说明
bool dba_exists ( string $key , resource $handle ) 检查key是否存在
3.5.2 参数
string $key key值
resource $handle 数据库handler, 通过调用 dba_open(), dba_popen() 函数返回
3.5.3 返回值
key存在返回TRUE, 否则返回FALSE
3.5.4 示例
$dbh = dba_open( "./data/products", "c", "db4" )
or die( "Couldn't open database" );
if (dba_exists('Tricorder', $dbh)) {
$res_del = dba_delete('Tricorder', $dbh);
}
dba_close();
3.6 dba_replace()
3.6.1 说明
3.6.2 参数
string $key 要替换的key,如果可以不存在,就插入
string $value 要替换的值
resource $handle 数据库handler, 通过调用 dba_open(), dba_popen() 返回
3.6.3 返回值
如果成功则返回 TRUE,失败则返回 FALSE。
3.6.4 示例
$dbh = dba_open( "./data/products", "c", "db4" )
or die( "Couldn't open database" );
dba_insert("Tricorder", "55.50", $dbh);
dba_replace("Tricorder", "66.60", $dbh);
dba_close($dbh);
3.7 dba_firstkey()
3.7.1 说明
3.7.2 参数
resource $handle 打开的数据库handler, 通过dba_open(), dba_popen() 返回
3.7.3 返回值
成功返回key值,失败返回FALSE
3.7.4 示例
$dbh = dba_open( "./data/products", "c", "db4" )
or die( "Couldn't open database" );
echo dba_firstkey($dbh); // print "Sonic Screwdriver"
dba_close();
3.8 dba_nextkey()
3.8.1 说明
3.8.2 参数
resource $handle 打开的数据库handler, 通过调用dba_open(),dba_popen() 返回
3.8.3 返回值
成功返回key值, 失败返回FALSE
3.8.4 示例
$dbh = dba_open( "./data/products", "c", "db4" )
or die( "Couldn't open database" );
echo dba_firstkey($dbh); //print "Sonic Screwdriver"
echo dba_nextkey($dbh); //print "Tricorder"
dba_close();
3.9 dba_handlers()
3.9.1 说明
array dba_handlers ([ bool $full_info ] ) 获取支持的handlers列表
3.9.2 参数
bool $full_info 打开/关闭在结果集中显示全部信息,默认是FALSE
3.9.3 返回值
返回一个数据库handler的数组,假如full_info设置为TRUE,返回的数组以handler名字为键值,版本信息为值,否则返回一个索引数组,
3.9.4 示例
$dbh = dba_open( "./data/products", "c", "db4" )
or die( "Couldn't open database" );
print_r(dba_handlers());
// 默认参数,打印如下
Array
(
[0] => gdbm
[1] => cdb
[2] => cdb_make
[3] => db4
[4] => inifile
[5] => flatfile
)
print_r(dba_handlers(true));
// 参数为true,打印如下
Array
(
[gdbm] => GDBM version 1.8.3. 10/15/2002 (built Oct 22 2008 11:30:17)
[cdb] => 0.75, $Revision: 1.10.2.1.2.3 $
[cdb_make] => 0.75, $Revision: 1.9.2.1.2.1 $
[db4] => Berkeley DB 4.5.20: (September 20, 2006)
[inifile] => 1.0, $Revision: 1.14.2.1.2.3 $
[flatfile] => 1.0, $Revision: 1.14.2.1.2.1 $
)
3.10 dba_list()
3.10.1 说明
array dba_list ( void ) 获取打开的所有数据库列表
3.10.2 参数
void 无参数
3.10.3 返回值
一个联合数组, resourceid => filename
3.11 dba_popen()
3.11.1 说明
3.11.2 参数
参考dba_open() 函数
3.11.3 返回值
成功返回数据库handler, 否则返回FALSE
3.12.2 参数
resource $handle 打开的数据库handler, 通过调用dba_open(),dba_popen()返回
3.12.3 返回值
如果成功则返回 TRUE,失败则返回 FALSE。
3.13 dba_sync()
3.13.1 说明
bool dba_sync ( resource $handle ) 数据库的同步
3.13.2 参数
resource $handle 打开的数据库handler,通过调用dba_open(),dba_popen()返回
3.13.3 返回值
如果成功则返回 TRUE,失败则返回 FALSE。
3.14 dba_close()
3.14.1 说明
void dba_close ( resource $handle ) 关闭一个dba数据库
3.14.2 参数
resource $handle 打开的数据库handler,通过调用dba_open(),dba_popen() 返回
3.14.3 返回值
无
4. 使用db4,和gdbm的效率比较
文件1,打开dba数据库,handler设置为db4
文件2,打开dba数据库,handler设置为gdbm
文件1,文件2 循环写入100条记录,取出100记录,删除100条记录,所有的时间(单位为秒)如下:
文件1: 文件2:
写入时间::0.44283866882324 写入时间::2.2147016525269
读取时间::0.046286106109619 读取时间::0.037073612213135
删除时间: 0.00073099136352539 删除时间: 0.00082588195800781
由此看以看出: 读取,删除的时间基本差不多,使用db4写入的速度是比gdbm快5倍左右,
5.db 版本
db-4.5.20.NC.tar.gz
下载地址:http://www.berkeleydb.net/download/index.html
- php操作dba的总结笔记
- php文件操作的总结
- php操作memcache的总结
- PHP学习笔记(1)-php与C 操作符的区别(总结)
- DBA操作
- PHP中对文件的操作总结
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- php操作memcache的使用总结(1)
- php操作memcache的使用总结(2)
- php操作memcache的使用测试总结
- php操作memcache的使用测试总结
- PHP常用的一些数组操作总结
- DataTable批量插入数据库
- 积累
- X Window 设定介绍
- shell对参数操作 字符串操作
- 页面片段缓存方案介绍(OSCache,Velocity自定义标签,Varnish+ESI)
- php操作dba的总结笔记
- Android开发-交叉编译问题
- 试题一
- 正则表达式
- c++ 文件复制 往文件中输入字符、数字、字符串
- javascript无提示关闭窗口之二:跨浏览器
- 嵌入式工程必须知道的0x10个问题
- Mencoder 如何平滑降低帧率
- 关于Extjs gird使用checkbox的方法