2

多くのユーザーが一度に写真をアップロードするとします。では、他の生成された ID と決して一致しないすべての写真に一意の ID を生成するにはどうすればよいでしょうか。

$uniqId = time().'_'.rand();

または使用する必要があります。

uniqid();
4

3 に答える 3

7

関数uniqid()はナノ秒ごとに異なる ID を生成するため、ほとんどの場合一意になります。

共有環境 (複数のサーバー) で多数のユーザーが同時にアップロードすることが予想される場合、複数の要求がすべてのサーバーで同じナノ秒で処理される可能性が高くなります。

この関数は、結果の一意性を高めるために 2 つの引数を受け入れます。

  1. プレフィックス (最初の引数) をサーバー名に設定して、複数のサーバー名の競合を回避できます。
  2. 「より多くのエントロピー」(2 番目の引数) は、結果が一意になる可能性を高めます。

例えば:

echo uniqid($my_hostname, true);

サーバー名のほかに、ユーザー ID (該当する場合) などのエントロピーの他のソースを追加できます。

データベースを使用して画像を追跡している場合、もう 1 つの方法は、各行に固有の (auto_increment) 主キーを使用することです (そのため、データベースが一意性を処理します)。

于 2013-08-14T07:03:19.097 に答える
3

mysql テーブルごとに uniqueid を生成できます。

create table ids(id int auto_increment primary key);

ユーザーが写真をアップロードするとき、次のようにSQLを記述します

insert into ids () values();
select last_insert_id();
于 2013-08-14T07:03:03.430 に答える