Esempio n. 1
0
//为了简单起见这里置空掉,实际例用中它是必需的
$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);
//得到最大的可用值
$id = $obj->getByMax();
var_dump("getByMax:", $id);
//得到最大的可用值,但不标记得到的点为己占用