Esempio n. 1
0
require __DIR__ . "/../src/load.php";
//这里有$pdo, $table
require __DIR__ . "/test_db.php";
//存储时加锁器, 应该要有 lock($key), unlock($key) 两个方法
//为了简单起见这里置空掉,实际例用中它是必需的
$locker = null;
//可以用这个修改锁Key的前缀,一般默认就行,默认是'bybzmt_number_generator:'
//ToMysql::$_locker_key_prefix = '';
$persistent = new ToMysql($pdo, $table, $locker);
//base必需要8的倍数
$base = 32;
$dep = 3;
//实例化对像
$obj = new SlotManager($base, $dep, $persistent);
//增加10个slot
$ids = $obj->inrcSlot(10);
var_dump('inrcSlot ids:', implode(',', $ids));
//设置指定区间状态
//实际使用中base ^ dep经常与需要生成的数字区间不一至,关掉不需要的部分就行
$obj->setRange(100, 1000, 0);
//如果有特殊需要,也可以直接操作指定slot的数据
//$slot = $obj->getSlot($slot_id);
//$slot->setRange(100, 1000, 0);
//$obj->setSlot($slot_id, $slot);
//得到一个随军机的可用值
//如果需要多个调用多次即可
$id = $obj->getByRand();
var_dump("getByRand:", $id);
//得到最小的可用值
$id = $obj->getByMin();
var_dump("getByMin:", $id);