//为了简单起见这里置空掉,实际例用中它是必需的 $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); //得到最大的可用值,但不标记得到的点为己占用