PHP调用 Berkeley DB 有2种实现方式
这样就能使用下面的方法了
$id = dba_open("/tmp/test.db", "n", "qdbm"); if (!$id) { echo "dba_open failed\n"; exit; } dba_replace("key", "This is an example!", $id); if (dba_exists("key", $id)) { echo dba_fetch("key", $id); dba_delete("key", $id); } dba_close($id);
发现的问题:
结论:放弃此方法。
此模式使用Berkeley DB自带的PHP api,能使用比较底层的api
待解决问题:
实例:
$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 ++;
}