Joey Derrico wrote:
One possibility would be to make a DB table with 2 columns. One where each row has a value from 00000000 through 99999999, and the other column marked as for used. When you need to generate the random number you can query the database for each # not currently used and select randomly from the values not in use and just update the DB to mark it as used so it won't come up again. You won't have repeating numbers then. However it will slow down your application because that is a lot of rows to go through.

Joey Derrico

actually query like:
select id, rand_number from rand_numbers where used = '0' limit 1;
and then:
update rand_numbers set used = '1' where id = '$row['id']'

will be very fast even if table has millions of entries
only generating the numbers will be slow but you have to run it only once

also make sure to lock the table before and unlock after so you don't have two users selecting the same entry

this solution is good only if you know how many random number you will need
another way is to use two tables - prefix and then rand_numbers
prefix has only one entry and you concat it with value selected from second table after you run out of random numbers you just have to empty random_numbers table and regenerate values and change prefix to something else

but it is all complicated and I will just use old good md5(uniqid(rand(), true)) if possible

Artur



_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

http://www.nyphp.org/show_participation.php

Reply via email to