4

重複の可能性:
URL 短縮 Web サイトのような PHP ショート ハッシュ

一意の英数字トークンを使用して URL トークンを作成できる関数が必要ですが、使用しますuniqidが、ユーザーに好まれるトークンには長すぎます。uniqid文字列の末尾をどれだけ短くする必要があるかしかし同時に、1 秒間に 1000 件のリクエストを受け取ることができました (1 ミリ秒あたり 1 件)。文字列の計算にuniqid使用することを知っています。microtime()

これは可能ですか、それとも他の機能を使用する必要がありますか。別の関数を使用する必要がある場合は、1 つまたは 2 つ教えていただけますか?

前もって感謝します!

4

2 に答える 2

3

md4 が最速のようです: http://www.php.net/manual/en/function.hash.phpしかし 32 文字を生成します

crc32b は 8 文字ですが、それでも最速のハッシュの 1 つです

echo hash('crc32b', 'http://stackoverflow.com');

これは、1000 Kb のパフォーマンス結果として luka8088 によって投稿されています。

Results: (in microseconds)
   1.  md4                           5307.912
   2.  md5                           6890.058
   3.  crc32b                        7298.946
   4.  crc32                         7561.922
   5.  sha1                          8886.098
   6.  tiger128,3                    11054.992
   7.  haval192,3                    11132.955
   8.  haval224,3                    11160.135
   9.  tiger160,3                    11162.996
  10.  haval160,3                    11242.151
  11.  haval256,3                    11327.981
  12.  tiger192,3                    11630.058
  13.  haval128,3                    11880.874
  14.  tiger192,4                    14776.945
  15.  tiger128,4                    14871.12
  16.  tiger160,4                    14946.937
  17.  haval160,4                    15661.954
  18.  haval192,4                    15717.029
  19.  haval256,4                    15759.944
  20.  adler32                       15796.184
  21.  haval128,4                    15887.022
  22.  haval224,4                    16047.954
  23.  ripemd256                     16245.126
  24.  haval160,5                    17818.927
  25.  haval128,5                    17887.115
  26.  haval224,5                    18085.002
  27.  haval192,5                    18135.07
  28.  haval256,5                    18678.903
  29.  sha256                        19020.08
  30.  ripemd128                     20671.844
  31.  ripemd160                     21853.923
  32.  ripemd320                     22425.889
  33.  sha384                        45102.119
  34.  sha512                        45655.965
  35.  gost                          57237.148
  36.  whirlpool                     64682.96
  37.  snefru                        80352.783
  38.  md2                           705397.844

psおいしいは、すべてのURIにMD5を使用していました(どのURIにもおいしい.com/md5hash)

于 2012-07-28T20:53:48.867 に答える
0

このようなことを試しましたか?

$string = md5(rand()); 

長すぎる場合はsubstr()、短くするために使用できます。とても速いことがわかりました。

于 2012-07-28T20:53:36.683 に答える