4

可能重复:
PHP 短哈希,如 URL 缩短网站

我需要一个函数,我可以在其中使用唯一的字母数字标记制作 url 标记,我会使用它,uniqid但对于用户喜欢的标记来说太长了,我必须去掉uniqid字符串的末尾多少才能让它更短但同时我可以在一秒钟内收到 1000 个请求(所以每毫秒 1 个)。我知道uniqid用于microtime()计算字符串。

这是可能的还是我必须使用其他功能。如果我必须使用其他功能,那么您能告诉我一两个吗?

提前致谢!

4

2 回答 2

3

md4 似乎是最快的:http ://www.php.net/manual/en/function.hash.php但产生 32 个字符

crc32b 是 8 个字符,仍然是最快的哈希值之一

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

这是 luka8088 在 1000 Kb 上发布的性能结果:

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,delicious.com/md5hash)

于 2012-07-28T20:53:48.867 回答
0

你有没有尝试过这样的事情?

$string = md5(rand()); 

如果太长,你可以用substr()它来缩短它。我发现它非常快。

于 2012-07-28T20:53:36.683 回答