php bdb,BDB官方给PHP提供的接口的程序员真是不负责

刚写完前面的日志,又发现一个Bug:

根据Oracle官方提供的说明:

http://www.oracle.com/technology/documentation/berkeley-db/db/programmer_reference/ext_php.html

class Db4的声明如下:

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) {}

}

想测试一下BTREE和HASH方式的性能区别的时候,却怎么也找不到指定数据表类型的参数。有是看php扩展的源代码,居然发现程序是支持的,open的原型应该如下:

function open($txn = null, $file = null, $database = null, $type = DB_BTREE, $flags = DB_CREATE, $mode = 0)

漏的还不是最后一个参数。真够faint的。另外php源码中也没有为DB_BTREE、DB_HASH等类型定义宏。又要自己动手丰衣足食了。

在db4.cpp中增加了声明:

REGISTER_LONG_CONSTANT("DB_BTREE", DB_BTREE, CONST_CS | CONST_PERSISTENT);

REGISTER_LONG_CONSTANT("DB_HASH", DB_HASH, CONST_CS | CONST_PERSISTENT);

REGISTER_LONG_CONSTANT("DB_RECNO", DB_RECNO, CONST_CS | CONST_PERSISTENT);

REGISTER_LONG_CONSTANT("DB_QUEUE", DB_QUEUE, CONST_CS | CONST_PERSISTENT);

REGISTER_LONG_CONSTANT("DB_UNKNOWN", DB_UNKNOWN, CONST_CS | CONST_PERSISTENT);

另外未在代码中找到设置Cache以及PageSize的函数。看来这个是真的不支持了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值