ホームページ >バックエンド開発 >PHPチュートリアル >一意の番号を生成する方法
たとえば、タイムスタンプが生成され、それが一意であることを確認するためにそれを処理する方法を考えてみましょう。 。
time().mt_rand(100000,99999).mt_rand(100000,999999)
絶対的な一意性の保証はありません。
タイムスタンプは秒単位で一意です
php が提供する最小時間解像度はマイクロ秒です
マイクロ秒+???
function uninum(){ list($sec, $usec) = explode(' ',microtime()); return str_replace('.','',sprintf('%f',$sec + $usec).mt_rand(100000,999999));}echo uninum();
タイムスタンプは秒単位で一意です
php が提供する最小時間解像度はマイクロ秒です
time()
Click は一意性を保証できません
時間 + データベースの一意の番号??>一意の番号
乱数などを接続するにはマイクロ秒関数を使用します すでに良好な一意性を持っています
タイムスタンプ + ランダムを使用します
たとえば、タイムスタンプは 445656623323
の後に 5 桁の乱数が続きます
主に、基本的に重複がないことを保証できますが、重複がないことは保証できませんが、繰り返し発生した場合、その確率は1回2元の宝くじを10回か20回以上連続で買うのと同じだ。
5 桁の乱数が十分ではないと思われる場合は、サーバーが保持できる場合は、乱数を 20 桁または 30 桁に増やすことができ、その確率は明日エイリアンを見るのと同等です。
もちろん、まだ心配な場合は、他の 2 つの方法があります。タイムスタンプ + IP アドレスの組み合わせ + 2 つまたは 3 つの乱数です。これは決して繰り返されません
もう 1 つの方法は、データベースに書き込む前です。 、同じものが存在するかどうかを確認し、存在する場合は乱数を再生成します。
タイムスタンプ + ランダムを使用します
たとえば、タイムスタンプは 445656623323
の後に 5 桁の乱数が続きます
主に、基本的に繰り返さないことを保証できますが、決して繰り返さないことを保証することはできません。 , もしそうなった場合、その確率は、1回2元の高額宝くじを買うのと同じで、10回、20回以上連続で当たる可能性があります。
5 桁の乱数が十分ではないと思われる場合は、サーバーが保持できる場合は、乱数を 20 桁または 30 桁に増やすことができ、その確率は明日エイリアンを見るのと同等です。
もちろん、それでも心配な場合は、他の 2 つの方法があります。タイムスタンプ + IP アドレスの組み合わせ + 2 つまたは 3 つの乱数です。これは決して繰り返されません
もう 1 つの方法は、データベースに書き込む前です。 、同じものが存在するかどうかを確認し、存在する場合は乱数を再生成します。
タイムスタンプ + md5 (文字列)
mysql テーブルの自動インクリメント ID を使用することもできます固有の番号として