09/11
26
PHP操作Berkeley DB有两种方法,一是通过DBA系列函数来实现,具体看php手册dba_open,二是直接通过使用Berkeley DB自带的PHP API。 安装Berkeley DB的PHP扩展的方法可以看这篇博客。
我现在遇到了一个问题,需要对bdb的数据list出来。如果用dba_open里面提供了list方法。用DB4只能用游标。Berkeley DB官方提供的PHP API里,游标的函数:
class Db4Txn {
function abort() {}
function commit() {}
function discard() {
function id() {}
function set_timeout($timeout, $flags = 0) {}
}
直接调用get方法报错,跟C的api对比了下,发现php的手册提供的函数少了一个参数。
设置游标起始位置,$key 是bdb key-value中的key, $val 可以为空
$cursor->get($key, $val, DB_SET); //设置游标的起始位置
遍历数据库:
while( 0 === $cursor->get($key, $val, DB_NEXT) ) { echo $key, " => ", $val, " \r\n";}
完整的php操作bdb和游标使用实例如下:
$dbenv = new Db4Env();
$dbenv->set_data_dir(”/data/www/cp/tmpdb4/”);
$dbenv->open(”/data/www/cp/tmpdb4/”);
$db = new Db4($dbenv);
$db->open(null, ‘fileName2′, ‘ddb_name2′);
$counter = $db->get(”counter”);
print “Current value of counter is $counter\n”;
$db->put(”counter”, $counter+1);
for($i=0; $i<1000; $i++ ) {
$db->put(md5($i), “i: $i date:”.date(”Y-m-d H:i:s”).” - md5:”.md5($i) );
}
$i = 300;
$key = md5($i);
$cursor = $db->cursor(); //游标
$cursor->get($key, $val, DB_SET); //设置游标的起始位置
$k = 0;
while( 0 === $cursor->get($key, $val, DB_NEXT) ) { //遍历
echo $k, “, “, $key, ” => “, $val, ” \r\n”;
$k ++;
}
我现在遇到了一个问题,需要对bdb的数据list出来。如果用dba_open里面提供了list方法。用DB4只能用游标。Berkeley DB官方提供的PHP API里,游标的函数:
class Db4Txn {
function abort() {}
function commit() {}
function discard() {
function id() {}
function set_timeout($timeout, $flags = 0) {}
}
直接调用get方法报错,跟C的api对比了下,发现php的手册提供的函数少了一个参数。
设置游标起始位置,$key 是bdb key-value中的key, $val 可以为空
$cursor->get($key, $val, DB_SET); //设置游标的起始位置
遍历数据库:
while( 0 === $cursor->get($key, $val, DB_NEXT) ) { echo $key, " => ", $val, " \r\n";}
完整的php操作bdb和游标使用实例如下:
$dbenv = new Db4Env();
$dbenv->set_data_dir(”/data/www/cp/tmpdb4/”);
$dbenv->open(”/data/www/cp/tmpdb4/”);
$db = new Db4($dbenv);
$db->open(null, ‘fileName2′, ‘ddb_name2′);
$counter = $db->get(”counter”);
print “Current value of counter is $counter\n”;
$db->put(”counter”, $counter+1);
for($i=0; $i<1000; $i++ ) {
$db->put(md5($i), “i: $i date:”.date(”Y-m-d H:i:s”).” - md5:”.md5($i) );
}
$i = 300;
$key = md5($i);
$cursor = $db->cursor(); //游标
$cursor->get($key, $val, DB_SET); //设置游标的起始位置
$k = 0;
while( 0 === $cursor->get($key, $val, DB_NEXT) ) { //遍历
echo $k, “, “, $key, ” => “, $val, ” \r\n”;
$k ++;
}
berkeley db , php-db
mysql 的时间函数


