可能重复:
PHP 短哈希,如 URL 缩短网站
我需要一个函数,我可以在其中使用唯一的字母数字标记制作 url 标记,我会使用它,uniqid
但对于用户喜欢的标记来说太长了,我必须去掉uniqid
字符串的末尾多少才能让它更短但同时我可以在一秒钟内收到 1000 个请求(所以每毫秒 1 个)。我知道uniqid
用于microtime()
计算字符串。
这是可能的还是我必须使用其他功能。如果我必须使用其他功能,那么您能告诉我一两个吗?
提前致谢!
可能重复:
PHP 短哈希,如 URL 缩短网站
我需要一个函数,我可以在其中使用唯一的字母数字标记制作 url 标记,我会使用它,uniqid
但对于用户喜欢的标记来说太长了,我必须去掉uniqid
字符串的末尾多少才能让它更短但同时我可以在一秒钟内收到 1000 个请求(所以每毫秒 1 个)。我知道uniqid
用于microtime()
计算字符串。
这是可能的还是我必须使用其他功能。如果我必须使用其他功能,那么您能告诉我一两个吗?
提前致谢!
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)
你有没有尝试过这样的事情?
$string = md5(rand());
如果太长,你可以用substr()
它来缩短它。我发现它非常快。