嗨,我需要生成9位数的唯一帐号.这是我的伪代码:
function generateAccNo() generate an account number between 100,000,000 and 999,999,999 if the account number already exists in the DB call generateAccNo() /* recursive call */ else return new accout number end if end function
该函数似乎运行良好,但我有点担心递归调用.
这会导致任何内存泄漏(apache下的PHP 5)吗?
这是解决这个问题的可接受方式吗?
感谢您的输入.
你意识到这很可能导致堆栈溢出,对吗?随着客户数量的增加,未找到可接受帐号的可能性增加.
另外,为什么你不能只进行顺序帐号而每次只增加一个?使用这种方法,您只需要读取数据库中当前的最大ID,然后将其递增.
很抱歉这么直率,但你的解决方案是一个解决问题的可怕方法.它将使用大量内存(因为堆栈可能无限增长)并且它将对数据库进行大量昂贵的调用.
您应该考虑其他方法:
我强烈建议您在每次创建客户时增加客户编号.实际上,如果你正确设置你的数据库(在id列上有自动增量),你甚至不必设置id.每当您插入新客户时,都会为您设置ID.