PHP在多进程运行的情况下,如果不采用内存锁或者文件锁,基本没办法能解决 生成 唯一Id的问题。试过了静态变量、单例模式等等。查询到php里的uniqid()函数,最后还是找到了一个折中方式,虽然还是有可能出现 重复 的id,基本上可以在忍受访问内,唯一不好就
PHP在多进程运行的情况下,如果不采用内存锁或者文件锁,基本没办法能解决生成唯一Id的问题。试过了静态变量、单例模式等等。查询到php里的uniqid()函数,最后还是找到了一个折中方式,虽然还是有可能出现重复的id,基本上可以在忍受访问内,唯一不好就是id没有任何规律。
/** * 获取唯一的guid * @return string 32位字符串 */ public static function get_md5_id(){ return md5(uniqid("", true)); }
虽然php自带的uniqid()函数基本不会出现重复,但没办法直接只用,只能md5下生成32位的16进制码,算是投机取巧了。