多くのユーザーが一度に写真をアップロードするとします。では、他の生成された ID と決して一致しないすべての写真に一意の ID を生成するにはどうすればよいでしょうか。
$uniqId = time().'_'.rand();
または使用する必要があります。
uniqid();
関数uniqid()
はナノ秒ごとに異なる ID を生成するため、ほとんどの場合一意になります。
共有環境 (複数のサーバー) で多数のユーザーが同時にアップロードすることが予想される場合、複数の要求がすべてのサーバーで同じナノ秒で処理される可能性が高くなります。
この関数は、結果の一意性を高めるために 2 つの引数を受け入れます。
例えば:
echo uniqid($my_hostname, true);
サーバー名のほかに、ユーザー ID (該当する場合) などのエントロピーの他のソースを追加できます。
データベースを使用して画像を追跡している場合、もう 1 つの方法は、各行に固有の (auto_increment) 主キーを使用することです (そのため、データベースが一意性を処理します)。
mysql テーブルごとに uniqueid を生成できます。
create table ids(id int auto_increment primary key);
ユーザーが写真をアップロードするとき、次のようにSQLを記述します
insert into ids () values();
select last_insert_id();